【发布时间】:2015-04-15 23:08:27
【问题描述】:
我有一个示例字符串,例如 á、é、í、ó、ú、ü、ñ,我想替换特殊字符,例如:
有一个
é 与 e
等等..
我有一张地图,其中我有特殊字符作为键,其对应的替换作为值。
现在假设我将一个字符串“novás músíc”传递给一个正则表达式将验证它的方法,如果找到任何特殊字符(我提到的那个),那么它应该被映射的字符替换。
请帮助我进行正则表达式验证部分。
【问题讨论】:
-
你能展示你的代码吗?
-
您明白这些是不是“特殊”字符,对吧?如果您将其更改为
novas,那么novás是否会拼写错误?现在是 2015 年,在当今世界,强制语言符合英文字母表是完全没有必要和不恰当的。 -
正则表达式不是一个一个替换字符串中一组字符的正确工具。遍历字符并在需要时替换一个字符会更有效且更简单。
-
@TJCrowder 有有效的用例,例如我在实现搜索工具时使用它 - 我向用户显示的字符串始终是原始字符串,但在内部我将两者都标准化文档和查询,因此键盘不使用重音符号的用户可以执行不带重音符号的搜索并查找带有重音符号的文档,反之亦然。
-
@IanRoberts:当然,少数非常有限的用例。但是,除非引用此类案例,否则最好驳斥这种普遍认为这些角色在某种程度上“特殊”的观点。
标签: java regex unicode normalization unicode-normalization