@Test
public void testCamelCase() {
String orig="want_to_be_a_camel";
String camel=orig.replaceAll("_([a-z])", "$1".toUpperCase());
System.out.println(camel);
assertEquals("wantToBeACamel", camel);
}
Это не удается после отображения «wanttobeacamel». Почему нет символов верхнего регистра?Смешайте это! Почему этот простой тестовый пример не работает?
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)
========= Post Mortem:
Используя простой replaceAll был тупиковый. Я просто делал это ради удовольствия, чтобы научить моего ребенка кодировать ... но для Джаямохана, который спросил, вот альтернативный подход.
public String toCamelCase(String str) {
if (str==null || str.length()==0) {
return str;
}
char[] ar=str.toCharArray();
int backref=0;
ar[0]=Character.toLowerCase(ar[0]);
for (int i=0; i<ar.length; i++) {
if (ar[i]=='_') {
ar[i-backref++]=Character.toUpperCase(ar[i+++1]);
} else {
ar[i-backref]=ar[i];
}
}
return new String(ar).substring(0,ar.length-backref);
}
Я заметил свою ошибку ... но зачислил первого человека, который может указать на это. Нет ничего плохого в этом утверждении ... это то, что я ожидал от вывода - camelCasedString. – phatfingers
Psst, чувак скажите мне, и я поделюсь репутацией;) – Thihara
Thihara. Хех, хорошая попытка. джахрой ... нет. Не так эзотерично. – phatfingers