簡體   English   中英

確定字符串是否為 C# 中的換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM