java忽略转移i字符_Java。 比较字符串时忽略重音
Java。 比较字符串时忽略重音
问题很简单。 JAVA中是否有任何函数可以比较两个字符串并忽略重音字符而返回true?
即
String x = "Joao";
String y = "João";
回报相等。
谢谢
framara asked 2019-12-26T16:24:21Z
6个解决方案
65 votes
我认为您应该使用Collator类。 它允许您设置强度和区域设置,并将适当地比较字符。
从Java 1.6 API中:
您可以设置整理器的强度 属性确定水平 差异被认为在 比较。 四个优势是 提供:主要,次要, 大专和同等学历。 最正确 语言的优势分配 功能取决于语言环境。 对于 例如,在捷克语中,“ e”和“ f”是 被认为是主要差异,而 “ e”和“ě”是次要区别, “ e”和“ E”是三级差异 和“ e”和“ e”相同。
我认为这里的重点(人们正在努力做到的)是,“ Joao”和“João”永远不应被视为相等,但是,如果要进行排序,则不希望基于ASCII值对它们进行比较 因为那样您会遇到Joao,John,João之类的东西,这是不好的。 使用collator类肯定可以正确处理此问题。
DaveJohnston answered 2019-12-26T16:24:57Z
24 votes
您没有从我这里听到这个消息(因为我不同意问题的前提),但是,您可以使用java.text.Normalizer,并使用NFD对其进行规范化:这将重音与其附加的字母分开。 然后,您可以过滤重音字符并进行比较。
Chris Jester-Young answered 2019-12-26T16:25:18Z
7 votes
如果将其配置为忽略变音符号,则整理器将为a和á返回0:
public boolean isSame(String a, String b) {
Collator insenstiveStringComparator = Collator.getInstance();
insenstiveStringComparator.setStrength(Collator.PRIMARY);
return insenstiveStringComparator.compare(a, b) == 0;
}
isSame(“ a”,“á”)得出true
Benny Bottema answered 2019-12-26T16:25:44Z
6 votes
如果要比较/排序忽略重音符号,请使用apache StringUtils库中的stripAccents:
public int compareStripAccent(String a, String b) {
return StringUtils.stripAccents(a).compareTo(StringUtils.stripAccents(b));
}
Daniel answered 2019-12-26T16:26:03Z
1 votes
public boolean insenstiveStringComparator (String a, String b) {
java.text.Collator collate = java.text.Collator.getInstance();
collate.setStrength(java.text.Collator.PRIMARY);
collate.setDecomposition(java.text.Collator.CANONICAL_DECOMPOSITION);
return collate.equals(a, b);
}
-1 votes
这类转换的问题在于,从重音字符到非重音字符的映射始终不清晰。 它取决于代码页,本地化等。例如,此a的重音等同于“ a”吗? 对于人类而言这不是问题,但对于计算机而言则是棘手的。
AFAIK Java没有可以查询当前本地化选项并进行此类转换的内置转换。 您可能需要一些可以更好地处理unicode的外部库,例如ICU([http://site.icu-project.org/])
Uri answered 2019-12-26T16:26:44Z
java忽略转移i字符_Java。 比较字符串时忽略重音相关推荐
- java replace 忽略大小写_java替换字符串时忽略大小写
替换字符串大家都用的很熟悉了,但是估计日常很少用到替换时忽略大小写,今天问了身边几个工作超10年的java程序员,竟然大家都不知道怎么写了,这种基础代码竟然都淡忘了.正好学习整理一下,在这里也分享备忘 ...
- java中全大写字符_Java 大写字符串中的字符
public class ComputeInitials { public static void main(String[] args) {/**时 代 J a v a 公 众 号 - nowjav ...
- java string的某个字符_JAVA如何提取String中字符串的某个字符 具体内容
今天小编和大家分享JAVA如何提取String中字符串的某个字符,希望对大家有所帮助. 工具/材料 PC 操作方法 01 java中提取特定字符前的字符串: String str = "房估 ...
- java 按符号分割字符串_如何根据java根据指定的字符,分割字符串?
展开全部 根据java根据指定的字符,分割字符串的方法是:e69da5e887aa62616964757a686964616f31333365633866String temp[]=result.sp ...
- java遍历字符串字符_Java 遍历字符串中所有字符的最快方法
小编典典 在我的AMDx64 8core和源1.8上,使用'charAt'和字段访问之间没有区别.看来jvm已经过充分优化,可以内联和精简任何'string.charAt(n)'调用. 这完全取决于S ...
- java字符串去掉最后一个逗号_java拼接字符串时去掉最后一个多余逗号的方法
java拼接字符串时去掉最后一个多余逗号的方法 本文实例讲述了java拼接字符串时去掉最后一个多余逗号的方法.分享给大家供大家参考.具体分析如下: 先看下面这段代码: for (int t = 0; ...
- java string 去掉某个字符_JAVA String 如何去掉指定字符
展开全部 i.replace方法 该方法的作用是替换字符串中所有指定的字e69da5e6ba9062616964757a686964616f31333337616637符,然后生成一个新的字符串.经过 ...
- java string 连续字符_Java中字符串中连续相同字符去重方法
导读 正文 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到 ...
- java 截取两个字符之间的字符串_java里面如何截取两个关键字中间的字符串?
展开全部 1.split()+正则表达式来进行截取. 将正则传入62616964757a686964616fe58685e5aeb931333365633839split().返回的是一个字符串数组类 ...
最新文章
- java 创建 HMAC 签名
- 网络工程学习资料2---IEEE 802 标准集合
- Maven快照机制(SNAPSHOT)
- HTTP_REFERER的获取情况
- matlab拟合工具箱cftool
- Java多线程使用场景
- spring mvc学习(39):restful的crud实现删除方式
- 这些工具类用起来真的很”香“
- vb里面计算误差咱们解决_盘点3dmax渲染出来是黑色的6个原因及解决方法
- idea java文件显示j_IDEA 快捷使用指南
- console.log()注意事项。
- 「开源资讯」Apache Storm 2.2.0 发布,分布式实时计算
- 腾讯云TDSQL TCP干货
- uniapp对接ucharts图表
- Win10任务栏100%透明怎么设置?Win10任务栏100%透明设置教程
- 什么是粘包?socket 中造成粘包的原因是什么? 粘包的处理方式
- 微信企业号开发和配置
- 如何测算BMI指数(Python)
- 计算机组成原理(4)IO
- ROS TF2 中的 四元数 基础部分
热门文章
- The 10 Most Important Linux Commands/10个最经常使用的命令行
- Linux中的buff/cache内存
- Linux利用Esmtp 选择邮件服务器发送邮件(解决手机接收乱码)
- 详解created和mounted区别与使用场景
- int bool str (索引,切片) for 循环
- 模块一 day05 数据类型(上)
- Vue - Ant Design Vue 中 <a-select> 选择器组件,既可从下拉列表选择,又可输入手动输入文本(既可下拉选择又可自己输入)
- 经典好玩的休闲游戏大合集,免费玩
- 双网卡teamviewer linux,钉钉远程打卡2019实践录
- 计算机核心期刊排名及投稿经验