Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有特殊结构的字符串拆分_C#_Split - Fatal编程技术网

C# 具有特殊结构的字符串拆分

C# 具有特殊结构的字符串拆分,c#,split,C#,Split,我有以下形式的字符串: 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(':'); } string[]str_split=str

我有以下形式的字符串:

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(':'); 
} 
string[]str_split=str.split(',');
对于(int i=0;i
不幸的是,当一些数字在一个数字内有额外的“,”时,这种情况就会中断。例如,我们有如下内容:

695000:14306000:12136000:12363000:6

其中以下为数字,从左到右排列:

695000

十四,

306000

十二,

136000

十二,

363000

六,


如何解决此字符串拆分问题

这可能不是最好的方法,也可能不会一直有效,但我会这么做

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
      }
    }
  }
}
string[]leftRightDoubles=str.Split(':');
foreach(leftRightDoubles中的字符串子字符串){
字符串[]indivNumbers=str.Split(',');
//如果indivNumbers.Length==2,您就知道这两个是独立的数字
//如果indivNumbers.Length>2,则使用试探法确定哪些部分属于哪个数字
如果(indivNumbers.Length>2){
对于(int i=0,i

//这是一种带有注释的伪代码(有一段时间没有碰到C,所以我不想写完整的C代码)

如果只有冒号分隔符左侧的数字可以包含逗号,那么您可以简单地表示为:

string s = "695,000:14,306,000:12,136000:12,363000:6";
var parts = Regex.Split(s, @":|(?<=:\d+),");
string s=“695000:14306000:12136000:12363000:6”;

var parts=Regex.Split(s,@):|(?一个简单的解决方案是使用:作为分隔符进行拆分。生成的数组将具有格式为[int]、[int]的数字。解析整个数组,并使用作为分隔符拆分每个条目。这将为您提供一个[int]的数组数字。

是否总是
左边的数字:
谁有逗号?如果没有,就没有可靠的方法来执行拆分。例如,
123456789
可能被解释为
123456
789
,或者是
123
456789
。如果我正确理解你的话:不,有些这些数字可能有额外的逗号,有些可能没有。我的意思是:你能有像
123:456789
这样的情况吗,其中
456789
右边的数字包含一个逗号?正如我看到的,你一开始没有逻辑上的结论性格式,就像道格拉斯提到的,如果两者都有逗号分隔符呢在第一个带逗号的十进制数之后,你怎么知道该怎么走(除非你总是有点,但我看你没有)