Как изменить эту строку в Java? - PullRequest
0 голосов
/ 25 января 2012

Предположим, у меня две строки следующим образом:

String name = "EXAMPLE_MODEL_1";
String actionName = "ListModels";

Я хочу получить следующую строку следующим образом:

String result = "ExampleModel1ListModels";

Я попробовал код Follwoing:

String result = name.toLowerCase().replaceAll("_", "");
result = result.concat(actioName);

И я получаю значение результата как "examplemodel1ListModels".Но ожидаемый - "ExampleModel1ListModels".

Ответы [ 7 ]

3 голосов
/ 25 января 2012

В строке name необходимо заменить символы подчеркивания - вы это сделали. Прежде чем сделать это, вам необходимо преобразовать его в регистр заголовков .

После этого просто объедините две строки.

1 голос
/ 25 января 2012

Используйте Apache WordUtil.Capitalize Метод.

1 голос
/ 25 января 2012
1 голос
/ 25 января 2012

Вы используете метод toLowerCase(), поэтому вы получаете такой результат. Не используйте эту функцию.

0 голосов
/ 25 января 2012

Попробуйте использовать следующий код (я редактирую и вставляю полный код)

import java.io.IOException;
public class StringTest{

    public static void main(String[] arg) throws IOException{
        String name = "EXAMPLE_MODEL_1"; String actionName = "ListModels";
        String result = toProperCase(name.toLowerCase().replaceAll("_", " "))+actionName;
        result= result.replaceAll(" ","");
        System.out.println(result);

    }
    public static String toProperCase(String theString) throws java.io.IOException{
        java.io.StringReader in = new java.io.StringReader(theString.toLowerCase());
         boolean precededBySpace = true;
         StringBuffer properCase = new StringBuffer();    
             while(true) {      
            int i = in.read();
              if (i == -1)  break;      
                char c = (char)i;
                if (c == ' ' || c == '"' || c == '(' || c == '.' || c == '/' || c == '\\' || c == ',') {
                  properCase.append(c);
                  precededBySpace = true;
               } else {
                  if (precededBySpace) { 
                 properCase.append(Character.toUpperCase(c));
               } else { 
                     properCase.append(c); 
               }
               precededBySpace = false;
            }
            }

        return properCase.toString();    

    }
}
0 голосов
/ 25 января 2012

Apache commons-lang имеет вспомогательные классы, которые могут вам помочь. Ниже моя идея

  1. преобразовать имя в маленький регистр
  2. Использовать String capitalizeFully (String str, char [] delimiters) с разделителем в качестве _
  3. Удалить пробелы из результата шага 1
  4. объединить оба
0 голосов
/ 25 января 2012

Используйте Guava's CaseFormat

String result = LOWER_UNDERSCORE.to(UPPER_CAMEL, "EXAMPLE_MODEL_1") + "ListModels";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...