简体   繁体   中英

How to modify this String in Java?

Suppose I am having two Strings as follows :

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

I want resulting string as Follows :

String result = "ExampleModel1ListModels";

I tried the Follwoing code :

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

And I am getting the result value as "examplemodel1ListModels". But the exepected one is "ExampleModel1ListModels".

The name string needs to have the underscores replaced -- you've done that. Before you do that, you need to convert it to title case .

After that, simply concatenate the two strings.

You are using toLowerCase() method so you are getting result like that. Don't use this function.

使用Apache的WordUtil.Capitalize方法。

使用番石榴的CaseFormat

String result = LOWER_UNDERSCORE.to(UPPER_CAMEL, "EXAMPLE_MODEL_1") + "ListModels";

Apache commons-lang has utility classes that can help you. Below is my idea

  1. convert name to small case
  2. Use String capitalizeFully(String str, char[] delimiters) with delimiter as _
  3. Remove spaces out of result from step 1
  4. concatenate both

Try to use the following code (I'm editing and paste the full code)

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();    

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM