web-dev-qa-db-ja.com

Java文字列の特定の位置の文字を置き換えますか?

文字列の特定の位置にある文字を置き換えようとしています。

例えば:

String str = "hi";

文字列位置#2(i)を別の文字「k」に置き換えます

どうすればいいですか?ありがとう!

33
01jayss

Petar Ivanov に対する回答 文字列質問の特定のインデックスの文字を置き換える

Javaでは文字列は不変です。それらを変更することはできません。

文字を置き換えた新しい文字列を作成する必要があります。

String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);

または、StringBuilderを使用できます。

StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');

System.out.println(myName);
41
waldyr.ar

ケイ!

まず、文字列を扱うときは、0ベースの規則でその位置を参照する必要があります。これは、次のような文字列がある場合:

String str = "hi";
//str length is equal 2 but the character
//'h' is in the position 0 and character 'i' is in the postion 1


それを念頭に置いて、この問題に取り組む最善の方法は、次のような文字列内の特定の位置にある文字を置き換えるメソッドを作成することです。

方法:

public String changeCharInPosition(int position, char ch, String str){
    char[] charArray = str.toCharArray();
    charArray[position] = ch;
    return new String(charArray);
}

その後、この方法でメソッド 'changeCharInPosition'を呼び出す必要があります:

String str = "hi";
str = changeCharInPosition(1, 'k', str);
System.out.print(str); //this will return "hk"

ご質問がありましたら、お気軽に投稿してください!

15
Chicodelarosa

指定した位置の文字を置き換えるには:

public static String replaceCharAt(String s, int pos, char c) {
   return s.substring(0,pos) + c + s.substring(pos+1);
}
11
Ajay

StringBuilderを使用:

StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
10
Bohemian

文字列を再利用する必要がある場合は、StringBufferを使用します。

String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
    sb.setCharAt(1, 'k');
}

編集:

StringBufferはスレッドセーフですが、StringBuilderの使用は高速であることに注意してください。しかし、スレッドセーフではありません。

2
Borzh