如何在这个Java程序中使用StringBuilder处理String?

时间:2016-03-28 03:32:13

标签: java string stringbuilder

我无法解决这个问题

将句子转换为字符串,其中单词以空格分隔,只有第一个单词以大写字母开头。例如,字符串“StopAndSmellTheRoses。”将转换为“停止并闻到玫瑰。”使用StringBuilder对象处理字符串。使用JOptionPane进行用户输入/输出。使用包装器类字符来检测单词。

到目前为止我有什么。我很困惑我如何使用包装类来检测大写字母,然后在它们后面插入一个空格。

public static void main(String[] args) {


    String input;


    input = JOptionPane.showInputDialog("Please enter a sentence in which "
            + "every word "
            + "begins with an upper case letter: ");

    input = input.trim();

    StringBuilder sb = new StringBuilder(input);

    for(int i = 0; i < input.length(); i++)
     {
        if((Character.isUpperCase(input)))
      {

        }
    }

}

3 个答案:

答案 0 :(得分:1)

因此,使用regexlookahead

相比,有一种更简单的方法
Arrays.toString("StopAndSmellTheRoses.".split("(?=[A-Z])"))

答案 1 :(得分:0)

我实际上没有尝试过这个,但也许是沿着这些路线?

// Iterate up to second last element 
for(int i = 0; i < input.length(); i++) {
    // Get i-th character
    char val = input.charAt(i);
    // If i-th character is upper case
    if((Character.isUpperCase(val))) {
        // Insert whitespace
        sb.append(" ");       
    }
    // Append lower case char
    sb.append(Character.toLowerCase(val));
}

答案 2 :(得分:0)

拆分然后加入。

String str = "StopAndSmellTheRoses.";
String[] r = str.split("(?=\\p{Upper})");
StringBuilder hello = new StringBuilder();
String delimiter = " "; 
for(String s : r) {
   hello.append(s).append(delimiter);
}
System.out.println(hello);

输出:Stop And Smell The Roses.