【问题标题】:How to auto-capitalise inputted letters in Java如何在Java中自动大写输入的字母
【发布时间】:2013-10-05 06:30:50
【问题描述】:

我有一个非常愚蠢的问题,但我不知道该怎么做,因为我是初学者。从标题中,你大概能猜到我需要什么帮助……

这是我创建的基本程序:

    // Character name.
import java.util.Scanner;

public class name {
    public void charName(){
        Scanner input = new Scanner(System.in);
        String name;
        System.out.println("What is your name?");
        name = input.nextLine();

        System.out.println(name + "? That's a very nice name, pleased to meet you!");
    }
}

这要求输入一个名称,然后再次重复该名称以及一个语句。我的问题是,这会回复我输入的确切内容,所以如果我输入“jake”,它会回复“jake”,或者如果我输入“JaKe”,它会回复“JaKe”。我希望这个程序能够以首字母大写的方式说出人名,无论我如何键入它。例如。我输入“JAKE”,但它以“Jake”响应。

【问题讨论】:

  • 当人们要求“显示你的代码”时——他们的意思不是“显示你程序中的所有代码,但不显示你的问题”。在这种情况下,您没有显示任何内容,甚至 尝试 转换字符串的大小写 - 您显示的所有内容都是无关紧要的。

标签: java


【解决方案1】:

你需要String class的一些方法:

  • substring(int, int):从索引中获取子字符串
  • substring(int):获取从索引到字符串末尾的子字符串
  • toLowerCase():将整个字符串转为小写
  • toUpperCase():将整个字符串转换为大写

同时使用substring 方法将名称的第一个字母和其余部分作为单独的字符串获取。然后使用toUpperCase()toLowerCase() 将字符串重新连接在一起。

【讨论】:

    【解决方案2】:

    一行:

        String str = "jake";
    
        String out = str.substring(0, 1).toUpperCase() + str.substring(1);
    

    顺便说一句,作为其他选项,您可以使用 WordUtils

    WordUtils.capitalize("i am FINE") = "I Am FINE"

    【讨论】:

      【解决方案3】:

      首先小写输入,然后大写第一个字符:

      String name = "Jake";
      String lower= name.toLowerCase();
      

      之后看看这里:First char to upper case

      【讨论】:

        【解决方案4】:

        这有帮助吗:

        String capSmall = "jAKE";
        String firstLetter = String.valueOf(capSmall.charAt(0));
        String theRest = capSmall.substring(1);
        String result = firstLetter.toUpperCase() + theRest.toLowerCase();
        System.out.println("---"+result);
        

        【讨论】:

          【解决方案5】:

          如果您可以使用 3rd 方库。使用这个WordUtils#capitalizeFully(String)。或者,如果这是家庭作业并且您必须自己完成,请参阅String#toLowerCase(),然后是String#toUpperCase() 的第一个字符,请参阅String#substring

          【讨论】:

            【解决方案6】:

            Apache Commons 库有一组不错的字符串实用程序。

            capitalizeFully method 完全满足您的需求。

            WordUtils.capitalizeFully("pOkEmOn lolz NOOBZ"); // returns Pokemon Lolz Noobz
            

            这个解决方案确实需要一个额外的依赖项,但该方法同时处理单字和多字输入。此外,图书馆里还有很多其他整洁的东西,我真的没有做过一个不会使用它的项目。

            如果你想坚持使用 vanilla Java API,你可以使用

            name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
            

            不过,这仅适用于单个单词。一些用户可能会想输入像Bender Bending Rodriguez 这样的全名。这可以通过将其与split 方法相结合来轻松解决,但我将把它留给你;)

            【讨论】:

              猜你喜欢
              • 2021-07-04
              • 2018-06-07
              • 2014-02-04
              • 2018-06-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-24
              相关资源
              最近更新 更多