【问题标题】:How to remove punctuations that possibly mark the end of a string?如何删除可能标记字符串结尾的标点符号?
【发布时间】:2013-09-28 01:45:31
【问题描述】:

我有一个如下形式的字符串:

String s = "......????!!!!! I am doing!!!???good , you say!!! ...how are...??!! you doing!?????.....";

我希望这个字符串的输出如下:

"I am doing!!!???good you say how are you doing"

而且我无法想出一个可以为我执行此操作的正则表达式,我正在尝试的是一种扫描字符串并附加到文本的蛮力方式,但是有很多情况可以测试这一点,如果有人可以帮助我找出一个正则表达式或更有效的方法来做到这一点,那就太好了。

更具体地说,我想这样做:删除所有前导和尾随终止符,但保留那些出现在字符串中的终止符,如“say????what”

【问题讨论】:

  • 看看this。但是,您需要对其进行修改以满足您的需要。
  • 我认为最好ban任何在句末使用多个标点符号的用户:-)
  • 我实际上需要这个解析例程,我只是解析一些随机文本,但似乎无法获得正则表达式:(

标签: java regex string


【解决方案1】:

这将适用于您的示例:

s = s.replaceAll("(?<=^| )[.?!]+|[.?!]+(?= |$)", "");

测试了这一行,它产生了您请求的输出。

它会删除空格旁边或两端的所有标点符号序列。

【讨论】:

  • 没问题 :) (如果它最能回答你的问题,你应该接受这个答案)
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多