我對什麼是打破行的正確方法感到困惑。如何打破行中的字符串
我讀的地方,窗戶使用\ r \ n以中斷線路,但是這兩個代碼產生相同的
regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
它是什麼的正確方法?這些表達式總是產生相同的?
我對什麼是打破行的正確方法感到困惑。如何打破行中的字符串
我讀的地方,窗戶使用\ r \ n以中斷線路,但是這兩個代碼產生相同的
regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
它是什麼的正確方法?這些表達式總是產生相同的?
如果你想支持新行字符爲各種平臺(例如,你需要分析輸入文件,在Linux下創建/ Windows/Mac在您的ASP。NET的網站),你不要攜帶空字符串,我建議用這個方法來代替:
myString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries)
這將返回
["one","two","three"]
輸入字符串
"one\r\ntwo\n\n\nthree"
更新: 如果您需要攜帶空行,您可以使用
myString.Replace("\r\n", "\n").Split("\n")
這應該適用於「\ r \ n」和「\ n」EOL字符文件。
好主意我打算使用它。如果我的字符串有一個異端的結尾,我可以添加一個替換更多刪除(非常不可能發生)隱形CR .... myString.Replace(「\ r \ n」,「\ n」)。replace(「\ R」, 「」)。分裂( 「\ n」 個) – mjsr 2011-04-07 21:12:29
使用
var myArray = sometext.Split(Environment.NewLine);
Environment.NewLine
會選擇正確的操作系統。如果數據是在不同的系統上創建的,這將失敗。一些可能在所有系統上工作,但有一些意想不到的後果是
var myArray = sometext.Split(new[] {'\r', '\n'},
StringSplitOptions.RemoveEmptyEntries);
一些可能令人擔憂的事情之一是,它會刪除在回車所有空行和分裂。
您可以使用Environment.NewLine
來確保您獲得正確的一個。
\ r是carriage return \ n是newline。
Windows默認使用\ r \ n
(Environment.NewLine)
。
[改寫澄清Environment.NewLine部分]
爲了得到正確的字符到你的文字,你可以使用Environment.NewLine,這將根據報告你的平臺上正確的字符分割。
由於其他答案中提到的原因,只做編輯說。 兩者都正常,但是我個人會使用:
regex.split(sometext, "\n");
編輯:
使用Environment.Newline在其他的答案建議。
Environment.NewLine是要走的路;你的例子在一些場景中用\ r char's來留下文本,這是不可取的。 – NKCSS 2011-04-07 15:08:12
regex.split(sometext, "\r\n");
將是做到這一點的方法。
原因,兩者似乎都給出了相同的結果是因爲「\ n」在「\ r」後打斷了字符串。所以你有一個帶有尾部「\ r」的子字符串,除非你用十六進制編輯器或其他東西仔細看它,否則這不會很明顯。
不過我建議使用,而不是「\ r \ n」個Environment.NewLine
首先 - 這不是C#。 .Net有'Regex.Split'。接下來,您可以提供更多細節 - 您是否需要保留空行?數據來自哪裏? – Kobi 2011-04-07 15:23:26
@Kobi他本可以從內存中寫出這些,這可以解釋不正確的外殼。 – NKCSS 2011-04-07 15:24:36
@NKCSS - 當問一個問題''時,這是一個非常糟糕的做法:)' – Kobi 2011-04-07 15:26:13