如何正确分割字符串?

本文关键字:字符串 分割 何正确 | 更新日期: 2023-09-27 18:11:33

((100&12)%41)&(43&144)这是我的字符串,我想把这个字符串分割成这样:

(
(
100
&
12
41
)....

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

1
0
0

thanks for help

如何正确分割字符串?

您可以编写自己的标记器,但为了帮助,有这样的东西是有用的(代码未经过测试):

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]}));
}

这里没有快速的1命令解决方案,如果您进一步处理您的数组以连接连续的char.isdigit()字符,String. tochararray()可以工作,或者您可以使用String。拆分方法,通过正确配置分隔符提取100、12和41块。

尝试遍历字符串并观察下一个char是否为数字。如果为false则分割,否则跳过

返回行列表:

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
)
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);
        }
    }
}