我有以下形式的字符串:
str =“[int]:[int],[int]:[int],[int]:[int],[int]:[int],...”(对于未定义的次数)。
我做的是:
string[] str_split = str.Split(',');
for( int i = 0; i < str_split.Length; i++ )
{
string[] str_split2 = str_split[i].Split(':');
}
不幸的是,当一些数字在数字中有额外的','时就会中断。例如,我们有这样的事情:
695,000:14306000:12,136000:12,363000:6
其中以下是数字,从左到右排序:
695000
14
306000
12
136000
12
363000
6
如何解决此字符串拆分问题?
答案 0 :(得分:1)
如果只有冒号分隔符左边的数字可以包含逗号,那么你可以简单地表达为:
string s = "695,000:14,306,000:12,136000:12,363000:6";
var parts = Regex.Split(s, @":|(?<=:\d+),");
标识分隔符的正则表达式模式读取:&#34;任何冒号,或冒号后面的任何逗号和数字序列(但不是另一个逗号)&#34;。
答案 1 :(得分:1)
使用以下命令拆分一个简单的解决方案:as delimiter。结果数组将具有格式[int],[int]的数字。解析数组并使用,作为分隔符拆分每个条目。这将为您提供一个[int]数字数组。
答案 2 :(得分:0)
它可能不是最好的方法,它可能不会一直有效,但这就是我要做的。
string[] leftRightDoubles = str.Split(':');
foreach(string substring in leftRightDoubles){
string[] indivNumbers = str.Split(',');
//if indivNumbers.Length == 2, you know that these two are separate numbers
//if indivNumbers.Length > 2, use heuristics to determine which parts belong to which number
if(indivNumbers.Length > 2) {
for(int i = 0, i < indivNumbers.Length, i++) {
if(indivNumbers[i] != '000') { //Or use some other heuristic
//It's a new number
} else {
//It's the rest of previous number
}
}
}
}
//这是带注释的伪代码(暂时没有触及C#,所以我不想写完整的C#代码)