제목은 거의 모든 것을 말합니다. Java "THIS_IS_AN_EXAMPLE_STRING"
에서 형식에서 ” ThisIsAnExampleString
” 형식 으로 문자열을 변환 할 수있는 가장 단순하고 가장 우아한 방법은 무엇입니까? 나는 String.replaceAll()
정규식을 사용하여 적어도 하나의 방법이 있어야한다고 생각합니다 .
내 생각은 다음과 같습니다. 문자열에 밑줄 ( _
)을 붙이고 전체 문자열을 소문자로 변환 한 다음 replaceAll을 사용하여 밑줄이 앞에 오는 모든 문자를 대문자 버전으로 변환하십시오.
답변
또 다른 옵션은 Google Guava를 사용하는 것입니다. com.google.common.base.CaseFormat
George Hawkins 는이 사용 예에 대해 설명을 남겼습니다.
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "THIS_IS_AN_EXAMPLE_STRING");
답변
Apache Commons lang 라이브러리 에서 WordUtils를 살펴보십시오 .
특히 capitalizeFully (String str, char [] delimiters) 메소드는 다음 작업을 수행해야합니다.
String blah = "LORD_OF_THE_RINGS";
assertEquals("LordOfTheRings", WordUtils.capitalizeFully(blah, new char[]{'_'}).replaceAll("_", ""));
그린 바!
답변
static String toCamelCase(String s){
String[] parts = s.split("_");
String camelCaseString = "";
for (String part : parts){
camelCaseString = camelCaseString + toProperCase(part);
}
return camelCaseString;
}
static String toProperCase(String s) {
return s.substring(0, 1).toUpperCase() +
s.substring(1).toLowerCase();
}
참고 : 인수 유효성 검사를 추가해야합니다.
답변
Apache Commons Lang3 lib를 사용하면 매우 쉽습니다.
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
public String getName(String text) {
return StringUtils.remove(WordUtils.capitalizeFully(text, '_'), "_");
}
예:
getName("SOME_CONSTANT");
제공합니다 :
"SomeConstant"
답변
public static void main(String[] args) {
String start = "THIS_IS_A_TEST";
StringBuffer sb = new StringBuffer();
for (String s : start.split("_")) {
sb.append(Character.toUpperCase(s.charAt(0)));
if (s.length() > 1) {
sb.append(s.substring(1, s.length()).toLowerCase());
}
}
System.out.println(sb);
}
답변
다음은 도움이 될 수있는 코드 스 니펫입니다.
String input = "ABC_DEF";
StringBuilder sb = new StringBuilder();
for( String oneString : input.toLowerCase().split("_") )
{
sb.append( oneString.substring(0,1).toUpperCase() );
sb.append( oneString.substring(1) );
}
// sb now holds your desired String
답변
스트림을 사용하는 Java 1.8 예
String text = "THIS_IS_SOME_TEXT";
String bactrianCamel = Stream.of(text.split("[^a-zA-Z0-9]"))
.map(v -> v.substring(0, 1).toUpperCase() + v.substring(1).toLowerCase())
.collect(Collectors.joining());
String dromedaryCamel = bactrianCamel.toLowerCase().substring(0, 1) + bactrianCamel.substring(1);
System.out.printf("%s is now %s%n", text, dromedaryCamel);
THIS_IS_SOME_TEXT 는 이제 thisIsSomeText입니다.