这个问题已经在这里有一个答案:
- 在字符串中特定指数更换一个人物? 8个回答
我想在一个字符串的特定位置替换字符。
例如:
String str = "hi";
替换字符串的位置#2(i)至另一个字母“K”
我会怎么做呢? 谢谢!
这个问题已经在这里有一个答案:
我想在一个字符串的特定位置替换字符。
例如:
String str = "hi";
替换字符串的位置#2(i)至另一个字母“K”
我会怎么做呢? 谢谢!
佩塔尔·伊万诺夫的答案, 在一个字符串问题的特定索引替换字符
字符串在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);
}
使用StringBuilder
:
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
如果您需要重新使用一个字符串,然后用StringBuffer:
String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
sb.setCharAt(1, 'k');
}
编辑:
需要注意的是StringBuffer的是线程安全的,在使用StringBuilder的是快,但不是线程安全的。