-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;
 }

私は最初の文字だけを大文字にしたいのですが、それは最初の文字を大文字にします.

4

8 に答える 8

2

str.replace(chr, chr1);その文字列内のcharのすべての出現箇所を置き換えます。sあなたの場合はすべてがに変わりSます。

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

これを試して

    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

あなたのコードでは、replace メソッドはすべて'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 に答える
1

単に次のことをしないのはなぜですか

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

ReplaceFirstメソッドを使用します。

str=str.replaceFirst(check, chreck1);

最初に置き換えます

また、if条件を次のように変更する必要があります。

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

この方法では、空の文字列は処理されません。

于 2012-10-30T07:06:17.250 に答える
0

これを試してください。1行だけ変更してください。

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 に答える
0

以下を使用できます。

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