Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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中拆分字符串?(否,不是string.split():)_C#_.net - Fatal编程技术网

C# 如何在c中拆分字符串?(否,不是string.split():)

C# 如何在c中拆分字符串?(否,不是string.split():),c#,.net,C#,.net,我有下一个字符串: 'Malaysia Index','Mc\'DONALDS CORPORATION','McDonalds','Me,dia' 我需要数组或字符串列表: Malaysia Index Mc'DONALDS CORPORATION McDonalds Me,dia 编辑: 下一个代码: var s = "'Malaysia Index','Mc\'DONALDS CORPORATION','McDonalds','Me,dia'"; var ss = s.Split(','

我有下一个字符串:

'Malaysia Index','Mc\'DONALDS CORPORATION','McDonalds','Me,dia'
我需要数组或字符串列表:

Malaysia Index
Mc'DONALDS CORPORATION
McDonalds
Me,dia
编辑: 下一个代码:

var s = "'Malaysia Index','Mc\'DONALDS CORPORATION','McDonalds','Me,dia'";
var ss = s.Split(',');
foreach (var res in ss)
    Console.WriteLine(res);
结果如下:

'Malaysia Index'
'Mc'DONALDS CORPORATION'
'McDonalds'
'Me                     !!!!!!!!!!!!!!
dia'                    !!!!!!!!!!!!!!

此代码生成预期结果:

s.Trim('\'')
 .Split(new[]{"','"}, StringSplitOptions.RemoveEmptyEntries)
它删除第一个和最后一个“符号并按“,”拆分”

输出

Malaysia Index
Mc'DONALDS CORPORATION
McDonalds
Me,dia

假设你的文本总是用这样的格式:“xxx”,“xxx”

执行代码以删除第一个“和最后一个”

然后将所有“,”替换为唯一的,不会出现在原始文本中的内容,如2个管道||

现在,用这个新的分隔符拆分格式化的文本||


您应该会得到预期的结果

为什么拆分是糟糕的解决方案?为什么不使用string.Split?看起来像一个简单的CSV类型文件,NuGet上可用的任何CSV解析器都应该能够满足您的要求。可能会重复@YuriDorokhov,因为分隔的数据可以包含分隔符。这需要一个比简单的string.Split更复杂的解析算法。只要数据在引号和分隔逗号之间不能有空格,只要所有分隔的数据元素都用单引号括起来,这就行了。@juharr,我同意。这对于输入字符串可能是正确的;但更糟糕的是,数据字段中可能存在“,”。它们需要更复杂的解析器