[英]Replacing Special Characters in Strings
我在这里看到了很多与此问题相关的问答。 我已经使用了一些例子,但有些事情是行不通的:
def input = 'now is thé timé'
println Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll(/[^A-z0-9 ]/, "").replaceAll(/ +/, "-")
以上的输出是
now-is-th-tim
如果我执行以下操作:
String input = 'now is th\u00E9 tim\u00E9'
println Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll(/[^A-z0-9 ]/, "").replaceAll(/ +/, "-")
我明白了
now-is-the-time
这就是我想要的。 我甚至尝试了以下方法:
def input = groovy.json.StringEscapeUtils.escapeJavaScript('now is thé timé')
println Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll(/[^A-z0-9 ]/, "").replaceAll(/ +/, "-")
但我明白了
now-is-th\u221A\u00A9-tim\u221A\u00A9
有什么建议么?
更新:根据评论,我尝试了以下内容:
import java.text.Normalizer
def input = new File('file.txt').text
def results = Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll(/[^A-z0-9 ]/, "")
.replaceAll(/ +/, "-")
println results
file.txt包含我在字符串中放置的文本。 这是按预期工作的。 因此,在groovy中对字符串定义进行编码时会发生一些事情。
鉴于您的第二个代码段有效,我强烈怀疑对于第一个代码段,您在编辑器中使用的编码与Groovy解释器/编译器使用的编码不同。
换句话说,问题不在代码的第二行 - 它在第一行。 您不是从您认为自己的输入文本开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.