为什么下面的代码无法分割字符串以查找字数? valueAsString是一个有效值的字符串;以空格分隔字符串作为分隔符
valuesAsString.Split(" ");
下面的代码工作正常
valuesAsString.Split(' ');
为什么下面的代码无法分割字符串以查找字数? valueAsString是一个有效值的字符串;以空格分隔字符串作为分隔符
valuesAsString.Split(" ");
下面的代码工作正常
valuesAsString.Split(' ');
为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[]
的隐式转换时,编译器炮直接结合string.Split(string)
。
一些替代方案,将工作:
valuesAsString.Split(new [] {" "}, StringSplitOptions.None);
valuesAsString.Split(" ".ToCharArray());
或只是
valuesAsString.Split();
,因为编译器将缺少值作为一个空的“阵列”为params
参数,和每个文档:
如果分隔符参数为空或不包含字符,则为空白字符rs被认为是分隔符。空白字符由Unicode标准定义,如果传递给Char.IsWhiteSpace方法,则返回true。
对于'ToCharArray()'+1,很好玩! –
拆分需要一个字符作为分隔符。当你使用双引号时,你将它标记为一个字符串。如果你使用单引号,它是一个字符。
因为Split函数采取char
或char[]
作为参数,请参阅:http://msdn.microsoft.com/en-us/library/b873y76a.aspx
询价运营商看到了http://msdn.microsoft.com/en-us/library/aa691090.aspx。
因为String.Split需要一个字符而不是字符串。 “”代表一个字符,而“”代表字符串
您正在寻找this重载版本我认为:
valuesAsString.Split(new [] { " " } ,StringSplitOptions.None);
我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
你是什么意思“无效”?你的意思是有一个编译错误?哪个错误? –
因为没有这样的过载。为什么没有这种超载?猜测只有编写框架的微软编写的程序员可以肯定地说,否则我们只能猜测。 –