Преобразовать camelCaseString в UPPERCASE_STRING_WITH_UNDERSCORE

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

например. addressId == > ADDRESS_ID

2 ответа

Вы можете создать свой собственный метод:

public static String toUpperCaseWithUnderscore(String input) {
 if(input == null) {
 throw new IllegalArgumentException();
 }
 StringBuilder sb = new StringBuilder();
 for(int i = 0; i < input.length(); i++) {
 char c = input.charAt(i);
 if(Character.isUpperCase(c)) {
 if(i > 0) {
 sb.append('_');
 }
 sb.append(c);
 } else {
 sb.append(Character.toUpperCase(c));
 }
 }
 return sb.toString();
}


В одной строке:

s.replaceAll("(?=[A-Z])","_").toUpperCase();

Это предполагает строку ASCII. Если вам нужен полный Юникод:

s.replaceAll("(?=[\\p{Lu}])","_").toUpperCase();

Если вы хотите иметь дело с PascalCase (первое письмо с верхним регистром), добавьте .replaceAll("^_","")

s.replaceAll("(?=[\\p{Lu}])","_").toUpperCase().replaceAll("^_","");

licensed under cc by-sa 3.0 with attribution.