用空格分隔每个大写单词

时间:2019-05-11 04:05:41

标签: java string

我想将一个句子转换为一个字符串,其中所有单词都用空格分隔,只有第一个单词以大写字母开头。
例如,字符串“ StopAndSmellTheRoses。”将被转换为“停止并闻玫瑰花香。”

当我编译它时,为什么它在每个大写字母之间都留了空格?

import java.io.*;
import java.util.Scanner;

public class assignment8 {

    public static String editing(String sentences) {
        for (int i = 0; i < sentences.length(); i++) {
            char c = sentences.charAt(i);
            if (Character.isUpperCase(c)) {
                sentences.concat(" ");
            }
        }
        return sentences;
    }

    public static void main(String[] args) throws FileNotFoundException {
        Scanner input = new Scanner(new File("sentence.txt"));
        String orignal;
        while (input.hasNextLine()) {
            orignal = input.nextLine();
            System.out.println(orignal);
            String edit = editing(orignal);
            System.out.println(edit);
        }
        input.close();
    }
}

2 个答案:

答案 0 :(得分:0)

字符串是不可变的。如果您想这样做,可以这样做:

public static String editing(String sentences){
        String str = sentences.charAt(0);

        for(int i=1;i<sentences.length();i++){
            char c=sentences.charAt(i);
            if(Character.isUpperCase(c)){
                str = str+" ";
                c= Character.toLowerCase(c);
            }
            str = str+c;
        }
        return str;
    }

这是一种简单的方法-可以对其进行优化。我希望你有主意。

答案 1 :(得分:0)

String.concat为您提供了一个新的String,您必须将其保存到某个变量中。改用StringBuilder,效率更高。

public static String editing(String sentences) {
    StringBuilder sb = new StringBuilder();
    sb.append(sentences.charAt(0));
    for (int i = 1; i < sentences.length(); i++) {
        char c = sentences.charAt(i);
        if (Character.isUpperCase(c)) {
            sb.append(" ");
            c = Character.toLowerCase(c);
        }
        sb.append(c);
    }
    return sb.toString();
}