爲什麼下面的代碼無法分割字符串以查找字數? 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/)」,其中的共識是「不,他們不應該」。 –
你是什麼意思「無效」?你的意思是有一個編譯錯誤?哪個錯誤? –
因爲沒有這樣的過載。爲什麼沒有這種超載?猜測只有編寫框架的微軟編寫的程序員可以肯定地說,否則我們只能猜測。 –