我无法确定一个字符串是不是换行符。我使用的字符串是从一个由Ultraedit编写,使用DOS终止符CR/LF的文件中读取的。我认为这相当于C#中的"\r\n"或Environment.NewLine。然而,当我进行如下比较时,它似乎总是返回false:
if(str==Environment.NewLine)
有谁知道这里在发生什么?
(这句话涉及 IT 技术,需要根据具体语境翻译。)这段代码是如何读取文本中的行的呢?如果你正在使用StreamReader.ReadLine(或类似的方法),那么换行符将不会出现在结果字符串中——它将是String.Empty或(i.e. "")。
您确定整个字符串只包含一个换行符,没有多余的内容吗?您是否已经尝试过str.Contains(Environment.NewLine)
?
str
的实际值。只需在调试器中查看它或将其打印出来即可。换行符应该是"\r\n",而不是"/r/n"。也许除了换行符还有其他问题……在调试模式下字符串的值是什么?
你可以使用新的.NET 4.0方法:String.IsNullOrWhiteSpace。
这是一个非常有价值的问题。
以下是答案。我发明了一个解决方案来解决它。
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
...
}