- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类,它将所有土耳其符号替换为类似的拉丁符号,并将结果传递给搜索器。
这些是符号替换的方法
@Override
String replaceTurkish(String words) {
if (checkWithRegExp(words)) {
return words.toLowerCase().replaceAll("ç", "c").replaceAll("ğ", "g").replaceAll("ı", "i").
replaceAll("ö", "o").replaceAll("ş", "s").replaceAll("ü", "u");
} else return words;
}
public static boolean checkWithRegExp(String word){
Pattern p = Pattern.compile("[öçğışü]");
Matcher m = p.matcher(word);
return m.matches();
}
但这总是返回未修改的单词语句。
我做错了什么?
提前致谢!
最佳答案
根据 Java 7 api,Matcher.matches()
Attempts to match the entire region against the pattern.
您的模式是“[öçğışü]”,regex101.com(一个很棒的资源)说它会匹配
a single character in the list öçğışü literally
也许您可能已经发现了问题。您的正则表达式不会匹配除单个土耳其字符之外的任何内容,因为您试图将整个区域与仅接受一个字符的正则表达式进行匹配。
根据 Andreas 在评论中的建议,我建议使用 find(),或者使用如下正则表达式:
“.*[öçğışü].*”
它实际上应该找到包含任何土耳其语特定字符的单词。
此外,我会指出正则表达式区分大小写,因此如果这些字母有大写变体,您也应该包含它们并修改您的替换语句。
最后(编辑):您可以使您的模式不区分大小写,但您的replaceAll仍然需要更改为不区分大小写。我不确定这将如何处理非拉丁字符,因此您应该在依赖它之前测试该标志。
Pattern p = Pattern.compile(".*[öçğışü].*", Pattern.CASE_INSENSITIVE);
关于java - 正则表达式将所有土耳其符号替换为常规拉丁符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232316/
我对UDF pig 拉丁有问题。 我正在尝试实现一个系统,该系统必须验证本地存储的矩阵与hadoop存储库中存储的一组矩阵之间是否存在“映射”。 对于映射,我的意思是在hadoop中是否存在一个存储矩
数据库的排序规则用法是什么?好吧,对于 HTML UTF-8,我知道一点,比如显示其他语言类型。但是对于数据库呢?我正在使用 latin-1(默认),我的 friend 告诉我改用 UTF。当我问为什
我有以下带有架构的数据 (t0: chararray,t1: int,t2: int) (B,4,2) (A,2,3) (A,3,2) (B,2,2) (A,1,2) (B,1,2) 我想生成以下结果
我正在尝试构建 AOSP 拉丁 IME(源代码:https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/m
我正在实现过滤器功能。我使用以下方法定义字符串是否适合查询: someString.IndexOf(someSearch, StringComparison.OrdinalIgnoreCase) >=
我是一名优秀的程序员,十分优秀!