我有一个文字
Category2,“Something with,逗号”
当我用','分开时,它应该给我两个字符串
但实际上它是从每个逗号分割字符串。
我怎样才能达到预期的效果。
Thanx
答案 0 :(得分:4)
只需致电variable.Split(new char[] { ',' }, 2)
即可。 MSDN中的完整文档。
答案 1 :(得分:2)
你可能想要在这里做很多事情,所以我将解决一些问题:
在第一个逗号上拆分
String text = text.Split(new char[] { ',' }, 2);
在每个逗号上拆分
String text = text.Split(new char[] {','});
拆分不在"
var result = Regex.Split(samplestring, ",(?=(?:[^']*'[^']*')*[^']*$)");
最后一个取自C# Regex Split
答案 2 :(得分:1)
指定数组中所需的最大字符串数:
string[] parts = text.Split(new char[] { ',' }, 2);
答案 3 :(得分:0)
String.Split
以最简单,最快的级别工作 - 因此它将文本分割到您传递给它的所有分隔符上,并且它没有像双引号这样的特殊规则的概念。
如果您需要一个理解双引号的CSV解析器,那么您可以自己编写或者有一些优秀的开源解析器可用 - 例如http://www.codeproject.com/KB/database/CsvReader.aspx - 这是我在几个项目中使用过的建议。
答案 4 :(得分:0)
试试这个:
public static class StringExtensions
{
public static IEnumerable<string> SplitToSubstrings(this string str)
{
int startIndex = 0;
bool isInQuotes = false;
for (int index = 0; index < str.Length; index++ )
{
if (str[index] == '\"')
isInQuotes = !isInQuotes;
bool isStartOfNewSubstring = (!isInQuotes && str[index] == ',');
if (isStartOfNewSubstring)
{
yield return str.Substring(startIndex, index - startIndex).Trim();
startIndex = index + 1;
}
}
yield return str.Substring(startIndex).Trim();
}
}
用法非常简单:
foreach(var str in text.SplitToSubstrings())
Console.WriteLine(str);