【问题标题】:c# Adding punctuation marksc# 添加标点符号
【发布时间】:2016-12-02 15:32:40
【问题描述】:

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

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

但是我遇到了一个问题...我的文本文件应该像书一样,所以显然会有多行...有什么方法可以添加“回车键”或我们应该添加的任何内容叫它换行(对不起我的英语不好)标点符号之一?因为以后在处理单个单词时,例如打印出最长的单词,第 2 3 行开头的单词在控制台中占了两行。

【问题讨论】:

  • 对于记录“回车键”也称为回车或换行
  • @Fuzzybear 在 Windows 中通常两者兼有。

标签: c# text split punctuation


【解决方案1】:

只需将\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 描述所有这些和其他空白字符。

【讨论】:

  • \n 和 \r 到底有什么区别?什么是回车?
  • @BligenN \n 或 newline original 意味着只下一行, \r 或回车意味着转到行首。因此,您需要两者都转到下一行的开头。这是打字机的事。
  • 感谢您的更新!真正有用的信息,即使这次我不需要它,因为我主要制作自己的文本文件,目标是让我们学会使用文本而不是太先进:) 但是无论如何,非常感谢男人,感激不尽
【解决方案2】:

要将新行添加到您的组,您需要使用新行和回车符:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      你可以试试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)));
      

      您可能想要添加一些其他字符,从技术上讲,它们不是标点符号:空格换行回车

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

      【讨论】:

        猜你喜欢
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 2015-04-12
        • 1970-01-01
        • 2021-12-20
        相关资源
        最近更新 更多