Разделение строки на части с помощью функции .replaceAll с противоположной стороны? JAVA - PullRequest
0 голосов
/ 27 апреля 2020

Допустим, у меня есть следующая строка в JAVA:

str = "B49FD7FD96B"

Я могу изменить эту строку на B49F D7FD 96B, выполнив следующие действия:

str = str.replaceAll("....",  "$0 ");

Но как я могу изменить свою строку на эту ??? B49 FD7F D96B

Таким образом, мне нужно использовать функцию .ReplaceAll () в противоположном направлении. Или это невозможно с .ReplaceAll (), и мне нужно использовать что-то еще? Если это так, что будет лучшим способом сделать это?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2020

Есть ли причина, по которой вы используете replaceAll? (Также кажется, что вы используете регулярное выражение) Почему бы просто не использовать for-l oop для получения желаемого результата?

Если вы хотите использовать то, что у вас есть, вы можете попробовать:

str = str.substring(0, 3) + " " + str.substring(3).replaceAll("....",  "$0 ");
1 голос
/ 28 апреля 2020

Это длиннее, но не использует регулярное выражение:

String groupInFours(String s) {
    int index = s.length() % 4;
    StringBuilder sb = new StringBuilder();
    if (index > 0) {
        sb.append(s.substring(0, index));
    }
    for (; index < s.length(); index += 4) {
        if (sb.length() > 0) {
            sb.append(" ");
        }
        sb.append(s.substring(index, index+4));
    }
    return sb.toString();
}

Создайте StringBuilder и добавьте любую начальную группу символов, которая не кратна четырем, затем добавьте группы по четыре, при необходимости с пробелами для остальной части строки.

1 голос
/ 27 апреля 2020

Если вы хотите разделить его на группы по 4 с остатками в начале, а не в конце, используя replaceAll «другим способом», вы можете просто перевернуть строку, сделать это и снова перевернуть ее:

str = "B49FD7FD96B";
str = new StringBuilder(str).reverse().toString();
str = str.replaceAll("....",  "$0 ");
str = new StringBuilder(str).reverse().toString();

Результат: "B49 FD7F D96B"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...