搜索换行符C#.net

本文关键字:net 换行符 搜索 | 更新日期: 2023-09-27 18:22:42

如何在字符串中搜索换行符?以下两项似乎都在回归-1。。。。!

 theJ = line.IndexOf(Environment.NewLine);

 theJ = line.IndexOf(''n');

它正在搜索的字符串是"yo''n"我正在分析的字符串包含这个"printf("yo''n");"我在比较过程中看到的字符串是:"''tprintf(''"yo''n''n");"

搜索换行符C#.net

"yo'n" // output as "yo" + newline
"yo'n".IndexOf(''n') // returns 2
"yo''n" // output as "yo'n"
"yo''n".IndexOf(''n') // returns -1

您确定搜索的是yo'n而不是yo''n吗?

编辑

根据你的更新,我可以看出我猜对了。如果你的字符串显示:

printf("yo'n");

那么它不包含换行符。如果是这样的话,它会是这样的:

printf("yo
");

它实际上有一个转义的换行符,或者换句话说,一个后面跟着"n"的反斜杠字符。这就是为什么调试时看到的字符串是"'tprintf('"yo''n'");"。如果你想找到这个字符组合,你可以使用:

line.IndexOf("''n")

例如:

"'tprintf('"yo''n'");" // output as "  printf("yo'n");"
"'tprintf('"yo''n'");".IndexOf("''n") // returns 11

看起来您的行不包含换行符。

如果在换行符上使用File.ReadAllLinesstring.Split,则返回数组中的每一行都不会包含换行符。如果使用StreamReader或从中继承的某个类,则ReadLine方法将返回字符串,而不包含换行符

string lotsOfLines = @"one
two
three";
string[] lines = lotsOfLines.Split(''n');
foreach(string line in lines)
{
  Console.WriteLine(line.IndexOf(''n'); // prints -1 three times
}

尽管在Windows中,您必须搜索'''r''n',但这应该有效。

-1只是表示找不到入口。

这取决于你想要做什么。在某些平台上,两者可能不完全相同。

Environment.NewLine返回:

对于非Unix平台,包含"''r''n"的字符串,或字符串包含Unix平台的"''n"。

还有:

  • 如果要搜索'n字符(Unix上的新行),请使用'n
  • 如果要搜索'r'n字符(Windows上的新行),请使用'r'n
  • 如果您的搜索依赖于当前平台,请使用Environment.NewLine

如果在您提到的两种情况下都返回-1,那么您的字符串中就没有新行了。

当我在大学的时候,我做了一个WebForms应用程序来订购引用。

换行符/回车符是我用来打断引用的。

        //Text from TextBox
        var text = textBox1.Text;
        //Create an array with the text between the carriage returns
        var references = text.Split(new string[] { "'r'n", "'r" }, StringSplitOptions.RemoveEmptyEntries);
        //Simple OrderBy(Alphabetical)
        var ordered = references.ToList<string>().OrderBy(ff => ff);
        //Return the entry text ordered alphabetical em with a carriage return between every result
        var valueToReturn = String.Join(Environment.NewLine, ordered);
        textBox1.Text = valueToReturn;

Environment.NewLine与''n不同。它是一个CRLF(''r''n)。不过,我确实尝试过使用IndexOf,并且我的测试确实找到了值。您确定要搜索的是a而不是a吗?以十六进制格式查看文本并查看十六进制值。