Как объединить Специальный символ как двоеточие после каждых 2 символов в Android - PullRequest
0 голосов
/ 24 января 2019

Я хочу объединить или добавить специальный символ в виде двоеточия : после каждых 2 символов в строке.

Например: Исходная строка выглядит следующим образом:

String abc =AABBCCDDEEFF;

После конкатенации или добавления двоеточия:

  String abc =AA:BB:CC:DD:EE:FF;

Так что мой вопрос в том, как мы можем достичь этого в Android.

Заранее спасибо.

Ответы [ 5 ]

0 голосов
/ 24 января 2019

В Kotlin используйте chunked(2), чтобы разделить String каждые 2 символа и соединиться с joinToString(":"):

val str = "AABBCCDDEEFF"
val newstr = str.chunked(2).joinToString(":")
println(newstr)

, чтобы напечатать

AA:BB:CC:DD:EE:FF
0 голосов
/ 24 января 2019

Вы можете объединить String.split и String.join (TextUtils.join(":", someList) для android), чтобы сначала разбить строку на каждом втором символе и присоединить ее, используя нужный разделитель. Пример:

String abc = "AABBCCDDEEFF";
String def = String.join(":", abc.split("(?<=\\G.{2})"));
System.out.println(def);
//AA:BB:CC:DD:EE:FF
0 голосов
/ 24 января 2019

Вы можете попробовать код ниже, если вы хотите обойтись без функций класса 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(":");
    }

Здесь

  1. a% 2 == 1 ** ==> этот условный оператор используется для добавления ** ":"
  2. a ==> этот условный оператор не используется для добавления ":"

в последней записи. Надеюсь, это имеет смысл. Если вы обнаружили какие-либо проблемы, пожалуйста, дайте мне знать.

0 голосов
/ 24 января 2019

Вот путь Котлина.без StringBuilder

val newString: String = abc.toCharArray().mapIndexed { index, c ->
            if (index % 2 == 1 && index < abc.length - 1) {
                "$c:"
            } else {
                c
            }
        }.joinToString("")
0 голосов
/ 24 января 2019

Используйте 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();
...