以下のプログラムでは、文字列を置き換えて同じ変数に代入しようとしています。しかし、Javaでは、文字列はimmutable
です。一度作成されると、それを変更することはできません。しかしここで私は変更することができます。私の理解が正しいかどうかは分かりません。誰でも助けてくれますか?Java不変の文字列
public static void main(String[] args) {
String s = "1234504";
s = s.replaceAll("0", "");
int count = 0;
for(int i = 0; i< s.length() ; i++){
if(Character.isDigit(s.charAt(0))){
count++;
}
}
System.out.println("Number of digits in string");
System.out.println(count);
}
文字列を変更していない場合は、新しい文字列に置き換えます。 – Kayaman
質問には関係しませんが、リテラルを置き換えるので、正規表現をサポートする 'replaceAll'を呼び出す必要はありません。リテラルに+ *^$などの正規表現メタキャラクタが含まれていると問題に直面しないように安全ですから、代わりに 'replace'を呼び出すほうがよいでしょう。両方のメソッドは、string内の検索された部分のすべての置換を置き換えます。これらのメソッドの違いは、正規表現のサポートだけです。 – Pshemo