【发布时间】:2011-06-01 16:29:43
【问题描述】:
我发现了一些关于过滤掉非英语的正则表达式的引用,但其中 none 是在 Java 中,除了他们都提到了一些 different 问题而不是我想要解决的问题:
- 替换所有非英文字符 有一个空格。
- 创建一个返回
true的方法 如果字符串包含任何非英语 字符。
我所说的“英文文本”不仅是指实际的字母和数字,还包括标点符号。
到目前为止,我能够实现的目标 #1 非常简单:
String.replaceAll("\\W", " ")
事实上,如此简单以至于我怀疑我遗漏了一些东西......你发现上面的任何警告了吗?
至于目标#2,我可以简单地在trim() 字符串之后 上面的replaceAll(),然后检查它是否为空。但是...有没有更有效的方法来做到这一点?
【问题讨论】:
-
有一些合法的英语单词包含重音字符 - 例如“naïve”。
-
我认为您需要定义“英文文本”的含义......即以下句子是否被视为“英文文本”? “她未婚夫的名字叫何塞·勃朗特。”
-
@Spudley @Nate 当然,你们俩都是正确的。对于我的特殊情况,“她未婚夫的名字是何塞·勃朗特。” not 被认为是 all 英语,因此该方法应返回
true。