使用'\ r \n'拆分文本

skm*_*asq 36 c# string split

我正在关注这篇文章

我想出了这段代码:

string FileName = "C:\\test.txt";

using (StreamReader sr = new StreamReader(FileName, Encoding.Default))
{
    string[] stringSeparators = new string[] { "\r\n" };
    string text = sr.ReadToEnd();
    string[] lines = text.Split(stringSeparators, StringSplitOptions.None);
    foreach (string s in lines)
    {
        Console.WriteLine(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是示例文本:

somet interesting text\n
some text that should be in the same line\r\n
some text should be in another line
Run Code Online (Sandbox Code Playgroud)

这是输出:

somet interesting text\r\n
some text that should be in the same line\r\n
some text should be in another line\r\n
Run Code Online (Sandbox Code Playgroud)

但我想要的是这个:

somet interesting textsome text that should be in the same line\r\n
some text should be in another line\r\n
Run Code Online (Sandbox Code Playgroud)

我想我应该得到这个结果,但不知怎的,我错过了一些东西......

Mag*_*nus 52

问题不在于分裂,而在于分裂WriteLine.\n打印出的字符串中的A WriteLine将产生"额外"线.

var text = 
  "somet interesting text\n" +
  "some text that should be in the same line\r\n" +
  "some text should be in another line";

string[] stringSeparators = new string[] { "\r\n" };
string[] lines = text.Split(stringSeparators, StringSplitOptions.None);
Console.WriteLine("Nr. Of items in list: " + lines.Length); // 2 lines
foreach (string s in lines)
{
   Console.WriteLine(s); //But will print 3 lines in total.
}
Run Code Online (Sandbox Code Playgroud)

\n在打印字符串之前解决问题.

Console.WriteLine(s.Replace("\n", ""));
Run Code Online (Sandbox Code Playgroud)


小智 7

这对我有用。

using System.IO;

//  

    string readStr = File.ReadAllText(file.FullName);          
    string[] read = readStr.Split(new char[] {'\r','\n'},StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)


Adr*_*ley 6

我采用了一种更紧凑的方法,将文本区域产生的输入拆分为 string 列表。如果适合您的目的,您可以使用它。

问题是你不能按 \r\n 分割,所以我事先删除了 \n 并仅按 \r 分割

var serials = model.List.Replace("\n","").Split('\r').ToList<string>();
Run Code Online (Sandbox Code Playgroud)

我喜欢这种方法,因为只需一行即可完成。


Szy*_*mon 5

我认为问题出在您的文本文件中。它可能已经分成太多行,当您阅读时,它会“添加”其他\r和/或\n字符(因为它们存在于文件中)。检查您读入text变量的内容。

下面的代码(在带有文本的局部变量上)可以正常工作,并分成两行:

string[] stringSeparators = new string[] { "\r\n" };
string text = "somet interesting text\nsome text that should be in the same line\r\nsome text should be in another line";
string[] lines = text.Split(stringSeparators, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)