问题很简单.JAVA中是否有任何函数可以比较两个字符串并返回true而忽略重音字符?
即
String x = "Joao";
String y = "João";
Run Code Online (Sandbox Code Playgroud)
回报是平等的.
谢谢
我列出了一些比利时城市的变音字符:(Liège,Quiévrain,Franière等)我希望将这些特殊字符转换为与包含相同名称的大写字母进行比较,但没有变音符号( LIEGE,QUIEVRAIN,FRANIERE)
我首先尝试做的是使用大写:
LIEGE.contentEqual(Liège.toUpperCase())
但这不合适,因为大写Liège
是LIÈGE
和不是LIEGE
.
我有一些复杂的想法,比如替换每个角色,但这听起来很愚蠢而且过程很长.
关于如何以聪明的方式做到这一点的任何想法?
用户输入一组带有重音和波浪号的名称:
Renato Núñez, David DeJesús, and Edwin Encarnación
Run Code Online (Sandbox Code Playgroud)
我的数据库为这些人设置了英文名称
@names = ('Renato Nunez','David DeJesus','Edwin Encarnacion');
Run Code Online (Sandbox Code Playgroud)
我希望对这些名称进行正则表达式匹配.
$string = "Renato Núñez, David DeJesús, and Edwin Encarnación";
foreach my $name (@names) {
print "found:$name\n" if ($name =~ /$string/);
}
Run Code Online (Sandbox Code Playgroud)
如目前所示,我没有比赛.
我尝试了这个,但它没有用.
$string = "Renato Núñez, David DeJesús, and Edwin Encarnación";
foreach my $name (@names) {
$name =~ s|a|[áa]|;
$name =~ s|e|[ée]|;
$name =~ s|i|[íi]|;
$name =~ s|o|[óo]|;
$name =~ s|u|[úu]|;
$name =~ s|n|[ñn]|;
# Originally: print "found:$name\n" if ($name =~ /$string/);
# …
Run Code Online (Sandbox Code Playgroud) 我试图匹配Java中的unicode字符.
输入字符串: informa
要匹配的字符串: informátion
到目前为止,我试过这个:
Pattern p= Pattern.compile("informa[\u0000-\uffff].*", (Pattern.UNICODE_CASE|Pattern.CANON_EQ|Pattern.CASE_INSENSITIVE));
String s = "informátion";
Matcher m = p.matcher(s);
if(m.matches()){
System.out.println("Match!");
}else{
System.out.println("No match");
}
Run Code Online (Sandbox Code Playgroud)
它出现了"不匹配".有任何想法吗?
可能的重复:
Java.在比较字符串Java字符串搜索忽略重音时
忽略重音
大家好
我需要比较java中可能像'Chloe'和'Chloé'的字符串.我需要它们是平等的.谁知道最佳做法是什么?还是有一些第三方图书馆?
罗马
java ×4
string ×3
unicode ×3
regex ×2
android ×1
compare ×1
diacritics ×1
localization ×1
perl ×1
replace ×1