我使用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()


当前回答

Java:

简单的一个帮助方法,用于大写每个字符串。

public static String capitalize(String str)
{
    if(str == null || str.length()<=1) return str;
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

然后调用str = capitalize(str)


科特林:

str.capitalize()

其他回答

字符字符不能存储在字符串中。 char和String不能连接。 String. valueof()用于将char转换为String

输入

india

Code

String name = "india";
char s1 = name.charAt(0).toUppercase()); // output: 'I'
System.out.println(String.valueOf(s1) + name.substring(1)); // output: "I"+ "ndia";

输出

India

您可以使用substring()来做到这一点。

但有两种情况:

案例1

如果你要大写的字符串是人类可读的,你还应该指定默认的语言环境:

String firstLetterCapitalized = 
    myString.substring(0, 1).toUpperCase(Locale.getDefault()) + myString.substring(1);

案例2

如果要大写的字符串是机器可读的,请避免使用locale . getdefault(),因为返回的字符串在不同的地区不一致,在这种情况下总是指定相同的地区(例如,toUpperCase(locale . english))。这将确保用于内部处理的字符串是一致的,这将帮助您避免难以发现的错误。

注意:您不必为toLowerCase()指定Locale.getDefault(),因为这是自动完成的。

String str = "java";
String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
// cap = "Java"

用你的例子:

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    // Actually use the Reader
    String name = br.readLine();
    // Don't mistake String object with a Character object
    String s1 = name.substring(0, 1).toUpperCase();
    String nameCapitalized = s1 + name.substring(1);
    System.out.println(nameCapitalized);
}

这段代码在文本中大写每个单词!

public String capitalizeText(String name) {
    String[] s = name.trim().toLowerCase().split("\\s+");
    name = "";
    for (String i : s){
        if(i.equals("")) return name; // or return anything you want
        name+= i.substring(0, 1).toUpperCase() + i.substring(1) + " "; // uppercase first char in words
    }
    return name.trim();
}

将字符串设置为小写,然后将第一个字母设置为大写,如下所示:

    userName = userName.toLowerCase();

然后把第一个字母大写:

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

Substring只是得到一个更大的字符串的一部分,然后我们将它们组合在一起。