2
votes

Comment concaténer un symbole spécial sous forme de deux-points après tous les 2 caractères dans Android

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.


0 commentaires

5 Réponses :


2
votes

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();


0 commentaires

3
votes

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

  1. a% 2 == 1 ** ==> cette instruction conditionnelle est utilisée pour ajouter ** ":"
  2. a ==> cette instruction conditionnelle est utilisée pour ne pas ajouter ":"^

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.


0 commentaires

1
votes

Voici la méthode Kotlin. sans StringBuilder final

val newString: String = abc.toCharArray().mapIndexed { index, c ->
            if (index % 2 == 1 && index < abc.length - 1) {
                "$c:"
            } else {
                c
            }
        }.joinToString("")


0 commentaires

1
votes

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


0 commentaires

6
votes

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)


0 commentaires