为什么以下代码无效拆分字符串以查找字数? valueAsString是一个有效值的字符串;
valuesAsString.Split(" ");
以下代码可以正常使用
valuesAsString.Split(' ');
答案 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)
不是重载,并且没有从string
到char[]
的隐式转换,编译器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)
由于拆分功能会将char
或char[]
作为参数,请参阅: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