Относительно манипуляций со строками - PullRequest
0 голосов
/ 15 марта 2010

У меня есть строка String, которая может иметь список значений, как показано ниже.Я хочу, чтобы первая буква в строке была заглавной, а если в строке появилось подчеркивание, мне нужно удалить ее и сделать букву после нее заглавной.Остальные все буквы я хочу, чтобы они были строчными.

""
"abc" 
"abc_def"
"Abc_def_Ghi12_abd"
"abc__de"
"_"
Output:
""
"Abc"
"AbcDef"
"AbcDefGhi12Abd"
"AbcDe"
""

Ответы [ 4 ]

1 голос
/ 15 марта 2010
  1. заменить _ пробелом (str.replace("_", " "))
  2. использовать WordUtils.capitalizeFully(str); (из commons-lang )
  3. заменить пробел ничем (str.replace(" ", ""))
1 голос
/ 15 марта 2010

Ну, не показав нам, что вы приложили любое усилие к этой проблеме, это будет довольно размыто.

Я вижу две возможности здесь:

  1. Разбейте строку на подчеркивания, примените ответ к этому вопросу к каждой части и объедините их.
  2. Создайте StringBuilder, пройдите через строку и отследите, являетесь ли вы

    • в начале строки
    • после подчеркивания или
    • где-то еще

    и действуйте соответствующим образом на текущем символе перед добавлением его к экземпляру StringBuilder.

0 голосов
/ 15 марта 2010

Используйте Pattern / Matcher в пакете java.util.regex:

для каждой строки в вашем массиве выполните следующие действия:

StringBuffer output = new StringBuffer();
Matcher match = Pattern.compile("[^|_](\w)").matcher(inStr);
while(match.find()) {
   match.appendReplacement(output, matcher.match(0).ToUpper());
}
match.appendTail(output);

// Will have the properly capitalized string.
String capitalized = output.ToString();

Регулярное выражение ищет либо начало строки, либо подчеркивание "[^ | _]" Затем помещает следующий символ в группу "(\ w)"

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

0 голосов
/ 15 марта 2010

Вы можете использовать следующий код на основе регулярных выражений:

public static String camelize(String input) {
  char[] c = input.toCharArray();
  Pattern pattern = Pattern.compile(".*_([a-z]).*");
  Matcher m = pattern.matcher(input);
  while ( m.find() ) {
    int index = m.start(1);
    c[index] = String.valueOf(c[index]).toUpperCase().charAt(0); 
  }
  return String.valueOf(c).replace("_", "");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...