Java在字符串的特定位置替换字符?

01j*_*yss 34 java string replace char

我试图替换字符串的特定位置的字符.

例如:

String str = "hi";
Run Code Online (Sandbox Code Playgroud)

将字符串位置#2(i)替换为另一个字母"k"

我该怎么做?谢谢!

wal*_*.ar 42

Petar Ivanov的答案是替换字符串问题中特定索引处的字符

字符串在Java中是不可变的.你无法改变它们.

您需要创建一个替换字符的新字符串.

String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用StringBuilder:

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

System.out.println(myName);
Run Code Online (Sandbox Code Playgroud)


Chi*_*ose 15

凯!

首先,在处理字符串时,你必须在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
Run Code Online (Sandbox Code Playgroud)


考虑到这一点,解决此问题的最佳方法是创建一个方法来替换字符串中给定位置的字符,如下所示:

方法:

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

然后你应该用这种方式调用方法'changeCharInPosition':

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

如果您有任何疑问,请不要犹豫,发帖!


Aja*_*jay 11

要替换指定位置的字符:

public static String replaceCharAt(String s, int pos, char c) {
   return s.substring(0,pos) + c + s.substring(pos+1);
}
Run Code Online (Sandbox Code Playgroud)


Boh*_*ian 10

用途StringBuilder:

StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
Run Code Online (Sandbox Code Playgroud)


Bor*_*rzh 5

如果需要重复使用字符串,请使用StringBuffer

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

编辑:

请注意,StringBuffer是线程安全的,而使用StringBuilder速度更快,但不是线程安全的。