Search code examples
javastringstringtokenizer

Capitalize first word of a sentence in a string with multiple sentences


eg:

String s="this is a.line is .over "

should come out as

"This is a.Line is.Over"

I thought of using string tokenizer twice

-first split using"."

 -second split using " " to get the first word

 -then change charAt[0].toUpper

now i'm not sure how to use the output of string tokenizer as input for another?

also i can using the split method to generate array something i tried

     String a="this is.a good boy";
     String [] dot=a.split("\\.");

       while(i<dot.length)
     {
         String [] sp=dot[i].split(" ");
            sp[0].charAt(0).toUpperCase();// what to do with this part?

Solution

  • Use StringBuilder, no need to split and create other strings, and so on, see the code

    public static void main(String... args) {
    
    String text = "this is a.line is. over";
    
    int pos = 0;
    boolean capitalize = true;
    StringBuilder sb = new StringBuilder(text);
    while (pos < sb.length()) {
        if (sb.charAt(pos) == '.') {
            capitalize = true;
        } else if (capitalize && !Character.isWhitespace(sb.charAt(pos))) {
            sb.setCharAt(pos, Character.toUpperCase(sb.charAt(pos)));
            capitalize = false;
        }
        pos++;
    }
    System.out.println(sb.toString());
    }