c#添加标点符号

时间:2016-12-02 15:32:41

标签: c# text split punctuation

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

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

但是我遇到了一个问题...我的文本文件应该像书一样,所以很明显会有多行......有没有办法添加&#34 ;输入键"或者我们称之为新的界限(抱歉我的英语不好)之一的标点符号?因为在以后处理单个单词时,例如打印出最长的单词,位于第2行3开头的单词等等在控制台中占用两行。

4 个答案:

答案 0 :(得分:5)

只需将\r\n添加到列表中即可。这就是“输入密钥” - 即“新行” - 在Windows操作系统中',它是Environment.NewLine返回的内容。

string punctuation = " ,.?!;:\"\r\n";

\r代表“回车”而\n代表“换行”,当它们一起使用时,称为“新行”(如上面的MSDN页面和其他地方所述)比如this SO answer)。

此外,还有其他不那么常见的“垂直空白”字符(请参阅my question here以供参考)。所以,要完成,我会这样做包括“垂直制表符”,“换页”,“下一行”,“行分隔符”和“段落分隔符”:

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

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

答案 1 :(得分:4)

要向组中添加新行,您需要使用新行和回车符:

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

答案 2 :(得分:1)

如果您想要结束行,则需要\n

答案 3 :(得分:1)

您可以尝试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 换行符回车

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