Beginner
Beginner

Reputation: 875

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".

Upvotes: 0

Views: 662

Answers (7)

Ramkumar Murugadoss
Ramkumar Murugadoss

Reputation: 2084

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

    }
}

Upvotes: 0

Prince John Wesley
Prince John Wesley

Reputation: 63698

Use Apache's WordUtil.Capitalize Method.

Upvotes: 1

Aravind Yarram
Aravind Yarram

Reputation: 80176

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

Upvotes: 0

Jigar Joshi
Jigar Joshi

Reputation: 240900

Use Guava's CaseFormat

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

Upvotes: 0

Oleksi
Oleksi

Reputation: 13097

Combine your partial solution, with the function described here:

What is the simplest way to convert a Java string from all caps (words separated by underscores) to CamelCase (no word separators)?

Upvotes: 1

Cᴏʀʏ
Cᴏʀʏ

Reputation: 107528

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.

Upvotes: 2

gprathour
gprathour

Reputation: 15333

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

Upvotes: 1

Related Questions