2013-07-31 173 views
1

你好,我在分隔字符串时遇到了问题。 下面是示例字符串。用冒号(:)分割字符串并用冒号分开数字

输入 - D93:E93 E98 E9:E10 E26 D76:E76 D83:E83 D121:D124

输出 - D93,E93,E98,E9,E10,E26,D76,E76,D83,E83,D121 ,D122,D123,D124

如果用同一个字母分隔两个字母,它会继续计数。 请帮助我..

问候,

+2

你有更多的信息,如示例代码?你到底在做什么,你的问题是关于分裂,然后你说一些关于继续计数的事情?你真的在追求什么,你尝试过什么。 –

+0

你是什么意思“它继续计数”? – doppelgreener

+0

如果它们具有相同的字母,则继续。该例子是D121:D124当你分开时,输出将是D121,D122,D123,D124,直到它结束于D124。 –

回答

6

你可以这样做:

var input = "D93:E93 E98 E9:E10 E26 D76:E76 D83:E83 D121:D124"; 
var list = input.Split(' '); 

var result = new List<String>(); 
foreach (var item in list) 
{ 
    var parts = item.Split(':'); 
    if (parts.Length == 1) result.Add(parts[0]); 
    else 
    { 
     if (parts[0].Substring(0, 1).CompareTo(parts[1].Substring(0, 1)) == 0) 
     { 
      var i = Convert.ToInt32(parts[0].Substring(1)); 
      var j = Convert.ToInt32(parts[1].Substring(1)); 

      while (i < j) 
      { 
       result.Add(parts[0].Substring(0, 1) + i); 
       i++; 
      } 

      if (i == j) 
      { 
       result.Add(parts[0].Substring(0, 1) + i); 
      } 
     } 
     else 
     { 
      result.Add(parts[0]); 
      result.Add(parts[1]); 
     } 
    } 
} 
Console.WriteLine(string.Join(", ", result)); 

//output 
D93, E93, E98, E9, E10, E26, D76, E76, D83, E83, D121, D122, D123, D124 
+0

它继续,如果它们有相同的字母。这个例子是D121:D124当你分开它时,输出将是D121,D122,D123,D124,直到它结束于D124 –

+0

@SamCasil更新。 – zsong

+0

非常感谢你@sza。你节省了我的时间。 –

2

尝试string.Split

string input = "D93:E93 E98 E9:E10 E26 D76:E76 D83:E83 D121:D124"; 
var output = input.Split(new [] {':', ' '}); 
Console.WriteLine(output); 

,或者如果您需要的逗号:

string input = "D93:E93 E98 E9:E10 E26 D76:E76 D83:E83 D121:D124"; 
var output = input.Split(new [] {':', ' '}); 
var outstr = output.Aggregate((a,e) => a + ", " + e); 
Console.WriteLine(outstr); 
+0

如果他们有相同的字母,它会继续。该例子是D121:D124当你分开它时,输出将是D121,D122,D123,D124,直到它结束于D124 –

3

易于EST的方法是使用String.Split()String.Join()组合:

var result = String.Join(", ", s.Split(':', ' ')); 
+0

它继续,如果他们有相同的字母。该例子是D121:D124当你分开时,输出将是D121,D122,D123,D124,直到它结束于D124 –