【问题标题】:Enter character in C#在 C# 中输入字符
【发布时间】:2014-10-05 16:52:09
【问题描述】:

我有这个代码:

while(!sr1.EndOfStream)
{
    radek1 = sr1.ReadLine();
    Console.Write(radek1);
    Console.WriteLine();
    string[] split1 = radek1.Split(new char[] { ' ', '???' });
}

我从file.txt 中读取了一个字符串数组,我需要用空格和输入来分割,所以我想交换这些?对于代表 Enter

的内容

【问题讨论】:

标签: c# input enter


【解决方案1】:

您的输入可能是指New Line。 在大多数情况下,这就是您要查找的内容:

string newLine = Environment.NewLine; //Updated to Sergey Volegov's suggested

在大多数情况下,Environment.NewLine 等于 "\r\n",但有时它只是 \n,因此使用 Environment.NewLine 更为明智。

\r 是回车符。
\n 是换行符。

把它想象成一台打字机。您需要回到行首 (​​\r),然后向下一行 (\n)

由于Environment.NewLine 是一个字符串,您将希望在Strings 上使用Split,而不是Chars:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine });

【讨论】:

  • 使用 Environment.NewLine 代替 "\r\n" 会更好
【解决方案2】:

使用这个:

Environment.NewLine.ToCharArray();

正如@Guffa 所说,你也可以拥有:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None));  

第二个根据空格和换行符分割。
不过,第一个由\r\n 分别拆分。所以对于正确的行为,你想使用第二种方法。

【讨论】:

  • 那是正确的。 EOL 是高度特定于平台的。
  • 我应该把这个放在哪里?
  • 如果Environment.NewLine"\r\n",那么在数组上拆分将在\r \n 上拆分,这意味着您会从每个数组中获得一个额外的空字符串新队。您必须拆分字符串来处理它,而不是字符。
  • @Guffa:你是对的,我在答案中添加了你指出的内容,谢谢
【解决方案3】:

这取决于文件的来源和创建方式。

如果它是在同一系统上创建的,它很可能会使用该特定系统的本机换行符组合,您可以使用 Environment.NewLine 常量:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None);

注意Environment.NewLine是一个字符串,可以包含多个字符,所以你需要对字符串进行拆分,并且调用需要一个StringSplitOptions参数,因为没有它就没有重载。

如果文件来自不同的系统(或使用不同系统的典型换行符创建),则需要指定该特定字符串。例如Windows系统中使用的两个字符串:

string[] split1 = radek1.Split(new string[] { " ", "\r\n" }, StringSplitOptions.None);

如果您需要处理来自不同系统的文件,您还可以包含最常见的换行符组合:

string[] split1 = radek1.Split(new string[] { " ", "\r\n", "\n" }, StringSplitOptions.None);

【讨论】:

    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多