删除空格并大写用户输入

时间:2016-03-26 02:10:00

标签: java replaceall capitalize

我已经制作了代码,因此它会向用户询问各种问题,如果input.trim().isEmpty()消息将被提供给用户,并且会要求用户再次输入。因此,如果用户只是写入空格,则给出消息。如果用户给出一些空格和一些字符,它将接受。

现在的问题是我想要将Word的第一个字母大写,但它确实不起作用。假如用户的输入以字母开头,那么将大写。但是,如果有空白,它根本就不会充分利用。

所以如果输入是:

  

卡特卡

输出是:

  

卡特卡

另一个例子:

  

卡特卡

输出是:

  

卡特卡

代码是:

String askWork = input.nextLine();

String workplace = askWork.trim().substring(0,1).toUpperCase()
 + askWork.substring(1);

while(askWork.trim()。isEmpty()){ String askWork = input.nextLine();

String workplace = askWork.trim().substring(0,1).toUpperCase()
 + askWork.substring(1);

}

我尝试了不同的方法但没有成功。

5 个答案:

答案 0 :(得分:4)

问题是因为空格,因为转换为大写时所引用的所有索引都不准确。 所以首先修剪()String,这样你就可以清除所有前导和尾随空格,然后将其大写。 更好地检查空字符串和所有空格以避免异常。

String askWork = input.nextLine().trim();
String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)

答案 1 :(得分:3)

trim() method on String将清除所有前导和尾随空格。修剪后的String必须成为您的新String,以便您之后引用的所有索引都是准确的。您将不再需要replaceAll("\\s","")。您还需要逻辑来测试空输入。您可以使用isEmpty() method on String。我已经写了一个玩具main(),它一直要求一个单词,然后一旦获得一个单词就会大写并打印出来。它将测试空白输入,输入没有字符等。

 public static void main(String[] args) throws Exception {

        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

        String askWork = "";
        while (askWork.isEmpty()) {
            System.out.println("Enter a word:");
            askWork = input.readLine().trim();
        }

        String workPlace = askWork.substring(0,1).toUpperCase() + askWork.substring(1);

        System.out.println(workPlace);
    }

答案 2 :(得分:1)

尝试修剪输入以删除空格,然后再尝试将其大写。

String askWork = input.nextLine().trim();
String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)

但是,如果输入只是空格,则会产生IndexOutOfBoundsException,因为调用trim()askWork设置为空字符串("")并且然后尝试访问空(长度为0)字符串的第一个字符。

String askWork = input.nextLine().trim();
if(askWork.isEmpty()) {
    // Display error
    JOptionPane.showMessageDialog(null, "Bad!");
else {
    String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)
    JOptionPane.showMessageDialog(null, "It worked! -- " + capitalized);
}

答案 3 :(得分:0)

在开始操作其内容之前,您需要修剪输入:

String askWork = input.nextLine().trim();

String workplace = askWork.substring(0,1).toUpperCase() + askWork.substring(1);

答案 4 :(得分:0)

没有子串的另一种解决方案:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    String askWork = input.nextLine().trim();

    while (askWork.isEmpty())
        askWork = input.nextLine().trim();

    char[] workChars = askWork.toCharArray();
    workChars[0] = workChars[0].toUpperCase();

    String workplace = String.valueOf(workChars);

    // Work with workplace

    input.close();
}