为什么会这样
string test = "Text1, Text2";
string [] tests = test.Split(", ".ToArray());
返回此
[0] = "Text1"
[1] = ""
[2] = "Text2"
测试[1]中的引号是什么?
我认为输出会像这样
[0] = "Text1"
[1] = "Text2"
答案 0 :(得分:2)
LINQ扩展方法让您感到悲伤!
你会发现System.String
实现IEnumerable<char>
允许字符串使用任何LINQ扩展方法 - 而你正在调用TSource[] ToArray<TSource>(this IEnumerable<TSource> source)
。因此,不是拆分字符串数组,而是拆分字符数组。
您的代码可以重写为:
string test = "Text1, Text2";
char[] separator = ", ".ToArray();
string[] tests = test.Split(separator);
由于您的输入包含两个彼此相邻的分隔符,因此您将在输出数组中获得空字符串。
Split
上没有System.String
方法,只需一个字符串作为分隔符。相反,您必须传入一个字符串分隔符数组。该方法还要求您提供StringSplitOptions
参数。
所以这就是你需要打电话的地方:
string test = "Text1, Text2";
string[] separator = new [] { ", " };
string[] tests = test.Split(separator, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:1)
string [] tests = test.Split(new string[] { ", " });
这个怎么样?
String.ToArray()
将字符串拆分为chars数组,但您需要一个字符串数组作为String.Split()
的参数。
答案 2 :(得分:1)
", ".ToArray()
会产生一个字符数组,如:
{ ',', ' '} //a ',' and a space
所以有两个分隔符(与string.Split(params char[])
版本匹配)。
你应该这样做:
string test = "Text1, Text2";
string[] tests = test.Split(new string[] { ", " },
StringSplitOptions.RemoveEmptyEntries);
// Updated
或
string test = "Text1, Text2";
string[] tests = test.Split(',');
// or: string[] tests = test.Split(new char[]{ ',' });
答案 3 :(得分:0)
您的代码
string test = "Text1, Text2";
string [] tests = test.Split(", ".ToArray());
等于
string test = "Text1, Text2";
string [] tests = test.Split(new char[2]{',',' '});
你应该使用
string test = "Text1, Text2";
string [] tests = test.Split(',');
答案 4 :(得分:0)
将ToArray()更改为ToCharArray()。