Rob*_*Rob 65 java string unicode diacritics
我想改变这句话:
Etçaserasamoitié.
至 :
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];
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 135
最后,我通过使用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;
}
Run Code Online (Sandbox Code Playgroud)
Ond*_*zek 80
也许最简单,最安全的方法是使用StringUtils由阿帕奇共享郎
StringUtils.stripAccents(String input)
Run Code Online (Sandbox Code Playgroud)
从字符串中删除变音符号(〜=重音符号).案件不会改变.例如,'à'将替换为'a'.请注意,连字将保持原样.
StringUtils的.stripAccents()
我想唯一的区别是我使用的是a +而不是[]与解决方案相比.我认为两者都有效,但最好也可以在这里使用.
String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
Run Code Online (Sandbox Code Playgroud)
对于科特林
fun stripAccents(s: String): String
{
var string = Normalizer.normalize(s, Normalizer.Form.NFD)
string = Regex("\\p{InCombiningDiacriticalMarks}+").replace(string, "")
return string
}
Run Code Online (Sandbox Code Playgroud)