用冒号(:)拆分字符串并用冒号分隔数字

时间:2013-07-31 03:38:22

标签: c# regex

您好我在分离字符串时遇到了问题。 以下是示例字符串。

输入 - 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

如果你用相同的字母将两者分开,它会继续计数。 请帮帮我..

此致

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

最简单的方法是使用String.Split()String.Join()的组合:

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

答案 2 :(得分: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);