Заменить camelCase01 на camel_case_01 - PullRequest
0 голосов
/ 28 мая 2020
public class Test {
    public static void main(String[] args) {
    String key = "camelCase01";
    System.out.println(caseFormat.LOWER_CAMEL.to(caseFormat.LOWER_UNDERSCORE, key));
    }
}

Вывод: camel_case01

Но я хочу напечатать строку camel_case_01

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вот один из способов сделать это.

Разделить строку на буквенные и числовые c значения, т.е. отделить числа от букв. См. Здесь - Java - Разделить строку, которая представляет собой буквенно-цифровую c

Затем примените snake_casing ко всем строкам алфавитов и присоедините массив с помощью символа «_»

0 голосов
/ 28 мая 2020

Поскольку Java, похоже, не поддерживает преобразование регистра с использованием \l, вы можете попробовать этот метод:

public static String toSnake(String s) {
        return s.replaceAll("([A-Z]|\\d+)", "_$1") // add _ before a cap letter or sequence of digits
                .replaceAll("_+", "_") // replace multiple underscores with one
                .replaceAll("^_", "")  // remove leading underscores
                .toLowerCase();
}

// Test
Arrays.asList(
    "camelCase01", "anotherCamelCase", "version1", 
    "version1_2", "PascalCase", "123SlySnake")
    .forEach(s -> System.out.println(s + " -> " + toSnake(s)));

Вывод

camelCase01 -> camel_case_01
anotherCamelCase -> another_camel_case
version1 -> version_1
version1_2 -> version_1_2
PascalCase -> pascal_case
123SlySnake -> 123_sly_snake
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...