我正在尝试替换字符串特定位置的字符。
例如:
String str = "hi";
将字符串位置#2(i)替换为另一个字母“k”
我该怎么做? 谢谢!
答案 0 :(得分:39)
Petar Ivanov对replace a character at a specific index in a string question
的回答String在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);
答案 1 :(得分:15)
Kay!
首先,在处理字符串时,你必须在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"
如果您有任何疑问,请不要犹豫,发帖!
答案 2 :(得分:11)
替换指定位置的字符:
public static String replaceCharAt(String s, int pos, char c) {
return s.substring(0,pos) + c + s.substring(pos+1);
}
答案 3 :(得分:10)
使用StringBuilder
:
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
答案 4 :(得分:2)
如果您需要重复使用字符串,请使用 StringBuffer :
String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
sb.setCharAt(1, 'k');
}
修改强>
请注意, StringBuffer 是线程安全的,而使用 StringBuilder 更快,但不是线程安全的。