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


当前回答

你要做的可能是:

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

(将第一个字符转换为大写,并添加原始字符串的其余部分)

此外,您创建了一个输入流读取器,但从不读取任何行。因此name将始终为空。

这应该可以工作:

BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);

其他回答

在Android Studio中

将此依赖项添加到构建中。gradle(模块:app)

dependencies {
    ...
    compile 'org.apache.commons:commons-lang3:3.1'
    ...
}

现在你可以使用

String string = "STRING WITH ALL CAPPS AND SPACES";

string = string.toLowerCase(); // Make all lowercase if you have caps

someTextView.setText(WordUtils.capitalize(string));

很多答案都非常有用,所以我用它们创建了一个方法来将任何字符串转换为标题(第一个字符大写):

static String toTitle (String s) {
      String s1 = s.substring(0,1).toUpperCase();
      String sTitle = s1 + s.substring(1);
      return sTitle;
 }

如果Input是大写,那么使用以下语句:

str.substring(0,1).toUpperCase() + str.substring(1).toLowerCase();

如果输入是小写的,那么使用以下:

str.substring(0, 1).toUpperCase() + str.substring(1);

看一下ACL WordUtils。

WordUtils。大写("your string") == "your string"

如何大写单词的第一个字母在一个字符串?

我发布的代码将从字符串中删除下划线(_)符号和额外的空格,而且它将大写字符串中每个新词的第一个字母

private String capitalize(String txt){ 
  List<String> finalTxt=new ArrayList<>();

  if(txt.contains("_")){
       txt=txt.replace("_"," ");
  }

  if(txt.contains(" ") && txt.length()>1){
       String[] tSS=txt.split(" ");
       for(String tSSV:tSS){ finalTxt.add(capitalize(tSSV)); }  
  }

  if(finalTxt.size()>0){
       txt="";
       for(String s:finalTxt){ txt+=s+" "; }
  }

  if(txt.endsWith(" ") && txt.length()>1){
       txt=txt.substring(0, (txt.length()-1));
       return txt;
  }

  txt = txt.substring(0,1).toUpperCase() + txt.substring(1).toLowerCase();
  return txt;
}