Je veux changer cette phrase:
Et ça sera sa moitié.
À :
Et ca sera sa moitie.
Y a-t-il un moyen facile de faire cela en Java, comme je le ferais en Objective-C?
NSString *str = @"Et ça sera sa moitié.";
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *newStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
Enfin, j'ai résolu le problème en utilisant la classe 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;
}
Peut-être que le moyen le plus simple et le plus sûr consiste à utiliser StringUtils
de Apache Commons Lang
StringUtils.stripAccents(String input)
Supprime les signes diacritiques (~ = accents) d'une chaîne. L'affaire ne sera pas modifiée. Par exemple, "à" sera remplacé par "a". Notez que les ligatures seront laissées telles quelles.
StringUtils . stripAccents ()
Je suppose que la seule différence est que j'utilise un +
et pas un []
par rapport à la solution. Je pense que les deux fonctionnent, mais il vaut mieux l'avoir ici aussi.
String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
En supposant que vous utilisez Java 6 ou plus récent, jetez un oeil à Normalizer
, qui peut décomposer les accents, puis utilisez une expression rationnelle pour dépouiller les accents de combinaison.
Sinon, vous devriez pouvoir obtenir le même résultat en utilisant ICU4J
.
Pour kotlin
fun stripAccents(s: String): String
{
var string = Normalizer.normalize(s, Normalizer.Form.NFD)
string = Regex("\\p{InCombiningDiacriticalMarks}+").replace(string, "")
return string
}