Je souhaite concaténer ou ajouter un caractère spécial sous forme de deux-points : après un caractère tous les 2 dans String.
Par exemple: La chaîne d'origine est la suivante:
String abc =AA:BB:CC:DD:EE:FF;
Après la concaténation ou l'ajout de deux points, voici:
String abc =AABBCCDDEEFF;
Ma question est donc de savoir comment nous pouvons y parvenir sous Android.
Merci d'avance.
5 Réponses :
Utilisez un StringBuilder :
StringBuilder sb = new StringBuilder(abc.length() * 3 / 2);
String delim = "";
for (int i = 0; i < abc.length(); i += 2) {
sb.append(delim);
sb.append(abc, i, Math.min(i + 2, abc.length()));
delim = ":";
}
String newAbc = sb.toString();
Vous pouvez essayer le code ci-dessous, si vous voulez vous passer des fonctions de classe Math.
StringBuilder stringBuilder = new StringBuilder();
for (int a =0; a < abc.length(); a++) {
stringBuilder.append(abc.charAt(a));
if (a % 2 == 1 && a < abc.length() -1)
stringBuilder.append(":");
}
Ici
dans la dernière entrée. J'espère que cela a du sens. Si vous rencontrez un problème, merci de me le faire savoir.
Voici la méthode Kotlin. sans StringBuilder finalval newString: String = abc.toCharArray().mapIndexed { index, c ->
if (index % 2 == 1 && index < abc.length - 1) {
"$c:"
} else {
c
}
}.joinToString("")
Vous pouvez combiner String.split et String.join ( TextUtils.join (":", someList) pour Android) en premier divisez la chaîne à chaque deuxième caractère et joignez-la en utilisant le délimiteur souhaité. Exemple:
String abc = "AABBCCDDEEFF";
String def = String.join(":", abc.split("(?<=\\G.{2})"));
System.out.println(def);
//AA:BB:CC:DD:EE:FF
Dans Kotlin, utilisez chunked (2) pour diviser la String tous les 2 caractères et la rejoindre avec joinToString (":") :
AA:BB:CC:DD:EE:FF
sera imprimé
val str = "AABBCCDDEEFF"
val newstr = str.chunked(2).joinToString(":")
println(newstr)