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)