C#如何正确拆分字符串?

时间:2011-10-15 11:06:24

标签: c# string split

((100&12)%41)&(43&144)这是我的字符串,我希望将此字符串拆分为:

(
(
100
&
12
41
)....

我尝试使用string.ToCharArray()方法,但是大整数会带来像100这样的问题:

1
0
0

感谢您的帮助

5 个答案:

答案 0 :(得分:1)

这里没有快速1命令解决方案imo,string.ToCharArray()可以工作,如果你进一步处理你的数组连接连续的char.isdigit()字符,或者你可以使用String.split方法提取100,12和41通过正确配置分隔符来阻塞块,并使用string.ToCharArray来分割剩下的分隔符。

答案 1 :(得分:1)

尝试迭代你的字符串并观察下一个字符是否为数字。如果为false则拆分,否则跳过

答案 2 :(得分:1)

您可以编写自己的标记生成器,但是对于这样的帮助是有用的(代码未经过测试):

var lst = new List<string>();
for (int i=0;i<str.Length;i++)
{

 if (char.IsDigit(str[i])
 {
    var tmp = new string(new []{str[i]});
    i++;
    while(i<str.Length && char.IsDigit(str[i]))
       { tmp+= str[i]; i++}
    i--;
    lst.Add(tmp);
 }
 else
  lst .Add(new string(new []{str[i]}));
}

答案 3 :(得分:1)

返回行列表:

static List<string> SplitLine(string str)
        {
            var lines = new List<string>();

            for (int i = 0; i < str.Length; i++)
            {
                if (!char.IsDigit(str[i]))
                {
                    lines.Add(str[i].ToString());
                    continue;
                }
                string digit = "";
                while (char.IsDigit(str[i]))
                {
                    digit += str[i++];
                }
                i--;
                lines.Add(digit);
            }

            return lines;
        }

输出:

(
(
100
&
12
)
%
41
)
&
(
43
&
144
)

答案 4 :(得分:0)

using System;
using System.Text.RegularExpressions;
class Sample {
    public static void Main(){
        var str = "((100&12)%41)&(43&144)";
        var pat = "([()&%])";
        var tokens = Regex.Split(str,pat);
        foreach(var token in tokens){
            if( !string.IsNullOrEmpty(token))
                Console.WriteLine("{0}", token);
        }
    }
}