[英]Determine if string is newline in C#
我不知何故無法確定一個字符串是否是換行符。 我使用的字符串是從 Ultraedit 使用 DOS Terminators CR/LF 編寫的文件中讀取的。 我認為這等同於 C# 中的 "\\r\\n" 或 Environment.NewLine。 但是,當我執行這樣的比較時,它似乎總是返回 false:
if(str==Environment.NewLine)
有人知道這里發生了什么嗎?
行是怎么讀的? 如果您使用的是 StreamReader.ReadLine(或類似的東西),換行符將不會出現在結果字符串中——它將是 String.Empty 或(即“”)。
您確定整個字符串只包含一個 NewLine 而不是更多或更少嗎? 您是否已經嘗試過str.Contains(Environment.NewLine)
?
最明顯的故障排除步驟是檢查str
實際值。 只需在調試器中查看或打印出來。
換行符是“\\r\\n”,而不是“/r/n”。 也許不僅僅是換行符......調試模式下的字符串值是什么?
您可以使用新的 .NET 4.0 方法:String.IsNullOrWhiteSpace
這是一個非常有效的問題。
這是答案。 我發明了一個kludge來照顧它。
static bool StringIsNewLine(string s)
{
return (!string.IsNullOrEmpty(s)) &&
(!string.IsNullOrWhiteSpace(s)) &&
(((s.Length == 1) && (s[0] == 8203)) ||
((s.Length == 2) && (s[0] == 8203) && (s[1] == 8203)));
}
像這樣使用它:
foreach (var line in linesOfMyFile)
{
if (StringIsNewLine(line)
{
// Ignore reading new lines
continue;
}
// Do the stuff only for non-empty lines
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.