【问题标题】:Java - Remove all non word characters of a string for all languagesJava - 删除所有语言的字符串的所有非单词字符
【发布时间】:2014-04-28 20:54:34
【问题描述】:

我需要从 java 中的单词中删除所有标点符号我试过这个

    System.out.println("do.,it".replaceAll("[^\\w]", ""));
    System.out.println("сказочники".replaceAll("[^\\w]", ""));

但它不适用于 kyrillic 或其他语言。我已经尝试过使用

\p{Punct}

但列表不完整,例如

„ and »

不见了

【问题讨论】:

标签: java regex punctuation


【解决方案1】:

不确定java是否支持这个,但试试看:

"сказочники".replaceAll("\P{wd}+", "")

其中\P{wd} 代表任何语言中的任何非单词字符。与\p{wd}相反

【讨论】:

  • 它在我的 Java 1.8 平台上不起作用。我成功地使用了 "сказочники".replaceAll("\P{LD}+", ""),其中 LD 代表“任何字母或数字”。
【解决方案2】:

试试这个正则表达式。

 text = text.replaceAll("[^a-zA-Z0-9\\s]", "");

这将删除除空格之外的所有特殊字符。

编辑:

因为这是一种不同的语言。

假设你必须删除- + ^ . : ,

试试这个,text = text.replaceAll("[\\-\\+\\.\\^:,]","");

【讨论】:

  • System.out.println("do.,it".replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2")) ;打印“do.,it”...我认为它不适用于 kyrillic
  • 试试第二个队友。
  • 我不知道为什么,但它似乎工作,谢谢 =) 我会尽快接受它
  • 我怎样才能包含更多的标点符号,例如 » ?
  • 只需在 [?:!.,;] 内添加即可
【解决方案3】:

我的解决方案似乎是

System.out.println("сказ очники»»«„“‚‘›‹".replaceAll("[^\\p{L}]", ""));

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 为什么这不是解决方案?我写了“我需要从 java 中的单词中删除所有标点符号”
  • 你也在问一个问题。 SO 是一个问答论坛,你不能以一个问题来结束答案......没有意义:-)
猜你喜欢
  • 1970-01-01
  • 2013-01-19
  • 2014-07-18
  • 2010-12-09
  • 2017-05-09
  • 2017-11-01
  • 2014-10-19
  • 1970-01-01
相关资源
最近更新 更多