文字列の特定の位置にある文字を置き換えようとしています。
例えば:
String str = "hi";
文字列位置 #2 (i) を別の文字 "k" に置き換えます
どうすればいいですか?ありがとう!
文字列の質問の特定のインデックスで文字を置き換えるための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);
ケイ!
まず第一に、文字列を扱うときは、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"
ご不明な点がございましたら、お気軽に投稿してください。
指定した位置の文字を置換するには:
public static String replaceCharAt(String s, int pos, char c) {
return s.substring(0,pos) + c + s.substring(pos+1);
}
文字列を再利用する必要がある場合は、StringBufferを使用します。
String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
sb.setCharAt(1, 'k');
}
編集:
StringBufferはスレッドセーフであることに注意してください。一方、 StringBuilderを使用すると高速ですが、スレッドセーフではありません。