2016-11-10 20 views
-2

檢查驗證碼:String.Split用於字符串[]工作的新線,但不能使用char []

string t = @"\nazerty \n\nazerty \n\nazerty \nazerty"; 

    string[] firstMethod = t.Split(new char[]{'\n'}, StringSplitOptions.RemoveEmptyEntries); 
    string[] secondMethod = t.Split(new string[]{@"\n"}, StringSplitOptions.RemoveEmptyEntries); 

爲什麼第一種方法不起作用,第二呢???

THX

+3

您使用的是逐字字符串,因此您實際上沒有任何'\ n'字符 - 您擁有的是「\\ n」。 –

+1

您的字符串不包含任何換行符。它包含反斜槓。你的第二次拆分調用分裂爲「反斜槓後跟n」。你的第一次拆分呼叫正在拆分真正的換行符。 「工作」和「不工作」的含義並不完全清楚......我們不知道您預期會發生什麼,或者發生了什麼。 –

+0

@JonSkeet基於OP試圖在換行符上分裂的事實,我的猜測是這是對逐字字符串的錯誤(無意)使用。 –

回答

0

這不是工作,因爲你正在使用逐字字符串,即:

string t = @"\nazerty \n\nazerty \n\nazerty \nazerty"; 

...相當於:

string t = "\\nazerty \\n\\nazerty \\n\\nazerty \\nazerty"; 

這可能是因爲你其實想以下使用換行符代替文字反斜槓-n:

string t = "\nazerty \n\nazerty \n\nazerty \nazerty"; 

這將是對 「成功」 分裂或者new[] { "\n" }new[] { '\n' }(但不new[] { @"\n" }其中預計反斜槓反斜槓-N)。

相關問題