この文を変更したい:
Etçasera samoitié。
宛先:
その他の部分。
Objective-Cで行うように、Javaでこれを行う簡単な方法はありますか?
NSString *str = @"Et ça sera sa moitié.";
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *newStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
最後に、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;
}
おそらく最も簡単で安全な方法は、 Apache Commons Lang のStringUtils
を使用することです
StringUtils.stripAccents(String input)
文字列から発音区別符号(〜=アクセント)を削除します。ケースは変更されません。たとえば、「à」は「a」に置き換えられます。合字はそのまま残されることに注意してください。
StringUtils . stripAccents()
唯一の違いは、ソリューションと比較して+
ではなく[]
を使用することです。どちらも機能すると思いますが、ここにもある方が良いでしょう。
String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
Java 6以降を使用していると仮定すると、 Normalizer
を調べて、アクセントを分解し、正規表現を使用して結合アクセントを取り除くことができます。
それ以外の場合は、 ICU4J
を使用して同じ結果を達成できるはずです。
コトリン用
fun stripAccents(s: String): String
{
var string = Normalizer.normalize(s, Normalizer.Form.NFD)
string = Regex("\\p{InCombiningDiacriticalMarks}+").replace(string, "")
return string
}