我使用Java从用户获得一个字符串输入。我试着让输入的第一个字母大写。
我试了一下:
String name;
BufferedReader br = new InputStreamReader(System.in);
String s1 = name.charAt(0).toUppercase());
System.out.println(s1 + name.substring(1));
这导致了以下编译错误:
类型不匹配:不能从InputStreamReader转换为BufferedReader
不能在基本类型char上调用toUppercase()
使用Apache的公共库。把你的大脑从这些东西中解放出来,避免空指针和索引脱离绑定异常
步骤1:
在build中导入apache的common lang库。gradle依赖性
implementation 'org.apache.commons:commons-lang3:3.6'
步骤2:
如果你确定你的字符串都是小写的,或者你只需要初始化第一个字母,直接调用
StringUtils.capitalize(yourString);
如果你想确保只有第一个字母是大写的,就像在枚举中那样,首先调用toLowerCase(),并记住,如果输入字符串为空,它将抛出NullPointerException。
StringUtils.capitalize(YourEnum.STUFF.name().toLowerCase());
StringUtils.capitalize(yourString.toLowerCase());
以下是apache提供的更多示例。它是无异常的
StringUtils.capitalize(null) = null
StringUtils.capitalize("") = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"
注意:
WordUtils也包含在这个库中,但已弃用。请不要用这个。
当前的答案要么是不正确的,要么是把这个简单的任务过于复杂了。在做了一些研究之后,我想到了以下两种方法:
1. 字符串的substring()方法
public static String capitalize(String str) {
if(str== null || str.isEmpty()) {
return str;
}
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
例子:
System.out.println(capitalize("java")); // Java
System.out.println(capitalize("beTa")); // BeTa
System.out.println(capitalize(null)); // null
2. Apache Commons Lang
Apache Commons Lang库为此目的提供了StringUtils类:
System.out.println(StringUtils.capitalize("apache commons")); // Apache commons
System.out.println(StringUtils.capitalize("heLLO")); // HeLLO
System.out.println(StringUtils.uncapitalize(null)); // null
不要忘记在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>