我想将一个句子转换为一个字符串,其中所有单词都用空格分隔,只有第一个单词以大写字母开头。
例如,字符串“ 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();
}
}
答案 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();
}