使用Space作为分隔符拆分字符串

时间:2014-01-27 14:00:49

标签: c#

为什么以下代码无效拆分字符串以查找字数? valueAsString是一个有效值的字符串;

valuesAsString.Split(" ");

以下代码可以正常使用

valuesAsString.Split(' ');

6 个答案:

答案 0 :(得分:3)

string.Split的重载是:

public string[] Split(params char[] separator)
public string[] Split(params char[] separator, int count) 
public string[] Split(params char[] separator, StringSplitOptions options) 
public string[] Split(params char[] separator, int count, StringSplitOptions options) 
public string[] Split(string[] separator, StringSplitOptions options) 
public string[] Split(string[] separator, int count, StringSplitOptions options) 

所以string.Split(char)有效,因为params说明符允许编译器将单个字符视为具有一个值的数组,因此选择了第一个重载。

public string[] Split(params string[] separator)

public string[] Split(string separator)

不是重载,并且没有从stringchar[]的隐式转换,编译器cannon直接绑定string.Split(string)

一些可行的替代方案:

valuesAsString.Split(new [] {" "}, StringSplitOptions.None);
valuesAsString.Split(" ".ToCharArray());

或只是

valuesAsString.Split();

因为编译器将缺少值视为params参数的空“数组”,并且根据文档:

  

如果separator参数为null或不包含字符,则假定空格字符为分隔符。空格字符由Unicode标准定义,如果将它们传递给Char.IsWhiteSpace方法,则返回true。

答案 1 :(得分:1)

Split需要char作为分隔符。当您使用双引号时,您将其标记为字符串。如果你使用单引号,它就是一个字符。

答案 2 :(得分:1)

由于拆分功能会将charchar[]作为参数,请参阅:http://msdn.microsoft.com/en-us/library/b873y76a.aspx

有关报价运算符,请参阅http://msdn.microsoft.com/en-us/library/aa691090.aspx

答案 3 :(得分:1)

因为带有一个参数的Split方法需要char参数(或char数组):look here

答案 4 :(得分:1)

您正在寻找this重载版本我认为:

valuesAsString.Split(new [] { " " } ,StringSplitOptions.None);

答案 5 :(得分:0)

因为String.Split需要Char而不是String。 ''代表Char,而“”代表String