-5

可能重复:
字符串替换方法不起作用

 public static String capitalise(String str)
    {
     if (str != null || !"".equals(str))
      {
       char chr=str.charAt(0);
       String check= Character.toString(chr);
       String check1= check.toUpperCase();
       char chr1=check1.charAt(0);
       str=str.replace(chr, chr1);
       return str;

     }
     else
     {
         System.out.println("Not a valid String");
     }
     return str;
 }

我只想将第一个字符大写,但它将第一个字符大写,例如在大写字符串 = shashank 变为 ShaShank 之后...我应该为它做什么。

4

8 回答 8

2

str.replace(chr, chr1);替换该字符串中所有出现的字符。在您的情况下,它将全部更改sS

用户substring将大写的第一个字符与字符串的其余部分连接起来。


这是您评论中附加问题的简单解决方案。它将在单个(!)空格后大写每个字符。您可能希望增强它以允许多个空格或多个白字符。

public static void main(final String[] args) {

    String s = "some words";
    StringBuilder result = new StringBuilder();
    boolean capitalizeNextLetter = true;
    for (char c : s.toCharArray()) {
        if (capitalizeNextLetter) {
            result.append(Character.toUpperCase(c));
            capitalizeNextLetter = false;
        } else {
            if (c == ' ') {
                capitalizeNextLetter = true;
            }
            result.append(c);
        }
    }

    System.out.println(result.toString());

}
于 2012-10-30T07:01:08.323 回答
1

怎么样:

public static String capitalize(String str) {
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}
于 2012-10-30T07:03:05.737 回答
1

为什么不简单地跟随

str= Character.toUpperCase(str.charAt(0)) + str.substring(1)  
于 2012-10-30T07:05:59.103 回答
1

尝试这个

    public static String capitalise(String str)
    {
      if (str != null || !"".equals(str))
      {
        char chr = str.charAt(0);           
        String capsString  = Character.toString(chr).toUpperCase() + str.substring(1);
        return capsString;
      }
      else
      {
        System.out.println("Not a valid String");
      }
    return str;
}
于 2012-10-30T07:11:35.787 回答
1

在您的代码中,替换方法将全部替换's''S'.
因为 char 包含's';
试试这个答案

public static String capitalise(String str)
{
 String test = str.substring(0,1);
 test=test.toUpperCase();
 System.out.println(test);
 String new1= test+str.substring(1,str.length());       
 return new1;    
 }
于 2012-10-30T07:14:19.030 回答
0

您可以使用以下。

char chr1=check1.charAt(0);
str = chr1 + str.substring(1);
于 2012-10-30T07:05:15.993 回答
0

使用ReplaceFirst方法。

str=str.replaceFirst(check, chreck1);

替换优先

此外,您应该将您的if条件更改为以下内容:

if (str != null && !"".equals(str))

这样就不会处理空字符串。

于 2012-10-30T07:06:17.250 回答
0

试试这个。只需更改一行。

public static String capitalise(String str)
{
 if (str != null || !"".equals(str))
  {
   char chr=str.charAt(0);
   String check= Character.toString(chr);
   String check1= check.toUpperCase();       
   str=check1+str.substring(1);
   return str;
 }
 else
 {
     System.out.println("Not a valid String");
 }
 return str;
}
于 2012-10-30T07:06:56.187 回答