【问题标题】:Separate first letter from String for capitalization将字符串中的第一个字母分开以进行大写
【发布时间】:2014-10-23 19:46:26
【问题描述】:

我想从用户那里获取一个字符串输入,并对其进行格式化,使第一个字母大写,其余字母不大写。我想通过拆分字符串中的第一个字母并在其上使用 .toUpperCase() 并在其余部分上使用 .toLowerCase() 来做到这一点,然后将它们重新合并在一起。

我有一个想法,但无法解决所有问题:

userInput = input.nextLine();
String firstLetter = ???
firstLetter.toUpperCase();
restOfString.toLowerCase();
String merged = firstLetter + restOfString;

这似乎不起作用:

            name = input.nextLine();
            firstLetter = name.substring(0,1);
            remainingString = name.substring(1);
            firstLetter.toUpperCase();
            remainingString.toLowerCase();
            name = firstLetter + remainingString;

【问题讨论】:

  • 正如我在回答中指出的那样,您必须分配 firstLetter = firstLetter.toUpperCase(); String 方法返回一个值更改的新字符串。他们不会更新原始字符串。
  • 哦,我明白了。对不起,我错过了!并且它有效!谢谢!! :)
  • 昨天被问到这个是重复的。可能仍然是。

标签: java string split capitalization


【解决方案1】:

你可以使用子字符串。

String firstLetter = userInput.substring(0,1); //takes first letter
String restOfString = userInput.substring(1); //takes rest of sentence
firstLetter = firstLetter.toUpperCase(); //make sure to set the string, the methods return strings, they don't change the string itself
restOfString = restOfString.toLowerCase();
String merged = firstletter + restOfString;

编辑:如果您希望对用户的输入进行错误检查:

if(userInput.length < 2) {
    throw new InputMismatchException("Sentence too short to properly capitalize!";
}

【讨论】:

  • 两个错误检查:字符串需要一个字母.substring(0, 1)才能工作,它需要两个字母.substring(1)才能工作。根据我们的具体用途,这可能无关紧要。
  • @BrianJ 我在答案末尾添加了错误处理作为旁白。
【解决方案2】:

我猜你正在使用基于toUpperCase() 的Java。我建议你做的是使用charAt() 获取第一个字母,并使用子字符串获取其余部分。

你可以试试这样的:

String firstLetter = userInput.substring(0, 1); // Get first element. If you don't understand substring, let me know.
string remainingString = userInput.substring(1); // Grab chars from index 1 to the end.

firstLetter.toUpperCase(); // Capitalize string
remainingString.toLowerCase(); // Lowercase rest of string

String finalString = firstLetter + remainingString;

希望这会有所帮助。

【讨论】:

  • 谢谢,看起来很不错!我在“CharAt(0)”处确实收到了 1 个错误。不兼容的类型:char 无法转换为 java.lang.string - 你知道为什么吗? :) 我必须导入任何包才能做到这一点吗?
  • @CasperTL 不,我认为这是我的错。可能 char 无法转换,我会调整答案以使用 substring。
  • 感谢您的宝贵时间!我让它与 Compass 的答案一起工作(通过子字符串):)
  • 很公平,答案是一样的。我想先到先得!如果您有任何其他问题,请随时询问。
猜你喜欢
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2022-01-09
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多