从 Unicode 字符串中删除重音符号的简单方法?

2022-08-31 11:41:11

我想改变这句话:

Et ça sera sa moitié.

自:

Et ca sera sa moitie.

有没有一种简单的方法可以在Java中做到这一点,就像我在Objective-C中所做的那样?

NSString *str = @"Et ça sera sa moitié.";
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *newStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

答案 1

最后,我通过使用类解决了它。Normalizer

import java.text.Normalizer;

public static String stripAccents(String s) 
{
    s = Normalizer.normalize(s, Normalizer.Form.NFD);
    s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
    return s;
}

答案 2

也许最简单,最安全的方法是从Apache Commons Lang使用。StringUtils

StringUtils.stripAccents(String input)

从字符串中删除音调符号(~= 重音符号)。表壳不会被更改。例如,“à”将被替换为“a”。请注意,连字将保持原样。

StringUtils.stripAccents()