c#添加标点符号

c# Adding punctuation marks

所以我有一个 c# 作业,其中我需要处理文本文件、用逗号和其他标点符号分隔单词。我选择这样做:

string Book1 = "@\..\Knyga1.txt";
string punctuation = " ,.?!;:\"";
string Read1 = File.ReadAllText(Book1);
string[] FirstFileWords = Read1.Split(punctuation.ToCharArray());

但是我 运行 遇到了一个问题...我的文本文件应该像书本一样,所以显然会有多行...有什么方法可以添加 "the enter key" 或任何我们称之为新行的东西(抱歉我的英语不好)标点符号之一?因为后面处理单个单词的时候,比如打印出最长的单词,第 2 3 行开头的单词在控制台占了两行。

只需将 \r\n 添加到列表中。那就是 "enter key" —— 即 "new line" —— 在 Windows OS' 中,它是 Environment.NewLine.

返回的内容
string punctuation = " ,.?!;:\"\r\n";

\r 代表 "carriage return",\n 代表 "line feed",它们一起使用时称为 "new line"(如上文所述MSDN 页面和其他地方,例如 this SO answer).

此外,还有其他不常见的 "vertical whitespace" 字符(参见 以供参考)。所以,为了完整起见,我会这样做以包括 "vertical tab"、"form feed"、"next line"、"line separator" 和 "paragraph separator":

string punctuation = " ,.?!;:\"\r\n\v\f\u0085\u2028\u2029";

Here's a Wikipedia article 描述所有这些和其他空白字符。

要向您的组添加新行,您需要使用新行和回车 return 个字符:

" ,.?!;:\"\r\n";

如果你想放置行尾你需要\n

你可以尝试char.IsPunctuation找出所有标点符号

// scan all the characters an filter out punctuation ones (585):
string punctuation = string.Concat(Enumerable.Range(0, char.MaxValue)
  .Select(c => (char)c)
  .Where(c => char.IsPunctuation(c)));

您可能想要添加一些其他字符,从技术上讲,这些字符不是标点符号:space换行符, 马车return:

string punctuation = " \r\n" + 
  string.Concat(Enumerable.Range(0, char.MaxValue)
    .Select(c => (char)c)
    .Where(c => char.IsPunctuation(c)));