【问题标题】:Limit amount of marks beetwen words except specific marks combination除特定标记组合外,限制单词之间的标记数量
【发布时间】:2017-01-20 07:38:03
【问题描述】:

我试图在字符串中只保留单词之间的一个空格,限制字符串中点、逗号的重复标记数量,如果在单词之间,则用标点符号替换合并的单词,并用空格保留它.

我想限制所有标记的数量,并且在单词之间只保留一个,问号除外,如果问号在点之前,我想保留两个,例如如果输入字符串是:

hello,,, world, how are you?.. hi...,.,.

现在我的结果是:

hello, world, how are you? hi.

但所需的输出应该是:

hello, world, how are you?. hi.

不知道怎么做

【问题讨论】:

  • "?."一句话的语法真的很差,为什么这是正确的答案?你的结果是正确的 - 除了 Hi 应该大写。
  • 问号后面不需要句号吗?
  • 现在,输出如你所愿,看看this regex demo(点击底部的Context标签)。
  • @BugFinder 你好,这个组合与语法无关,具体处理需要用到

标签: c# regex string linq punctuation


【解决方案1】:

一个非常简单的解决方案可能是

([.,])+|( )+

它匹配逗号或点,并且由于它在捕获组中,因此最后一个实例被捕获。用火柴交换捕获,将只剩下一个。

编辑为了处理多个空格,添加了另一个捕获组。它匹配空格,捕获最后一个。因此,与两个捕获交换匹配将处理标点符号和空格。

See the updated example here at regex101.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2016-06-16
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多