当前位置: 首页 > 面试题库 >

有没有一种方法可以消除口音并将整个字符串转换为常规字母?

徐丰茂
2023-03-14
问题内容

除了使用String.replaceAll()方法和逐个替换字母以外,还有没有更好的方法来消除重音并使这些字母规则化?例:

输入:orčpžsíáýd

输出: orcpzsiayd

它不需要包括所有带有重音符号的字母,例如俄语字母或中文字母。


问题答案:

使用java.text.Normalizer来处理这个给你。

string = Normalizer.normalize(string, Normalizer.Form.NFD);
// or Normalizer.Form.NFKD for a more "compatable" deconstruction 

这会将所有重音符号与字符分开。然后,您只需要比较每个字符和一个字母,然后扔掉那些不是字母。

string = string.replaceAll("[^\\p{ASCII}]", "");

如果您的文本使用unicode,则应改用以下代码:

string = string.replaceAll("\\p{M}", "");

对于unicode\\P{M}匹配基本字形,\\p{M}(小写)匹配每个重音。

由于GarretWilson的指针和regular-expressions.info为伟大的Unicode指南。



 类似资料:
  • 问题内容: 我需要转换成,成等。 有没有办法用库或类或其他东西做到这一点? 问题答案: 此代码的大部分是设置数字单词dict,仅在第一次调用时才完成。

  • 问题内容: 让我们说我有这样的查询: 通过在各处手动更改字符串,我使用不同的表多次运行此查询。我尝试声明以下内容: 但这似乎不起作用,因为它引发了一个错误,提示我必须先声明为表变量,然后才能使用它。我如何对表名进行模板化,如果可以的话,Intellisense仍然可以使用吗? 问题答案: 您可以将其包装在EXEC语句中,如下所示: 但是不,在这种情况下,智能感知将无法正常工作。 如果您事先知道输出

  • 问题内容: 在我的应用程序中,我想以字符串形式将位图图像发送到服务器,我想知道有多少种方法可以将位图转换为字符串。现在,我正在使用Base64格式进行编码和解码,它需要占用更多的内存。还有其他可能性以不同的方式做同样的事情,从而减少了内存消耗。现在我正在使用此代码。 问题答案: 这是将字符串转换为位图的相反过程,但字符串应为Base64编码

  • 问题内容: 在PHP中,有没有一种简单的方法可以将数字转换为单词?举例来说, 27 到 27 。 问题答案: 我在网上找到了一些(2007/2008)源代码,它具有版权,但是我可以自由使用它,并根据需要对其进行修改,因此将其放在此处并在CC-Wiki下重新许可:

  • 在C中,如果值不能为NULL,则通常引用传递而不是指针。 假设我有一个具有以下签名的函数,该签名通常与字符串文字一起使用。 我想知道如何更改函数,使其接受引用(并且具有不接受NULL的优势)? > 另一个选项是

  • 我想把一个double值转换成字符串并显示在HTML输入标记中。代码: