【发布时间】:2012-07-20 07:04:39
【问题描述】:
我正在尝试替换字符串特定位置的字符。
例如:
String str = "hi";
将字符串位置 #2 (i) 替换为另一个字母“k”
我该怎么做? 谢谢!
【问题讨论】:
我正在尝试替换字符串特定位置的字符。
例如:
String str = "hi";
将字符串位置 #2 (i) 替换为另一个字母“k”
我该怎么做? 谢谢!
【问题讨论】:
如果你需要重用一个字符串,那么使用StringBuffer:
String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
sb.setCharAt(1, 'k');
}
编辑:
请注意,StringBuffer 是线程安全的,而使用 StringBuilder 更快,但不是线程安全的。
【讨论】:
使用StringBuilder:
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
【讨论】:
替换指定位置的字符:
public static String replaceCharAt(String s, int pos, char c) {
return s.substring(0,pos) + c + s.substring(pos+1);
}
【讨论】:
凯!
首先,在处理字符串时,您必须参考它们在 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"
如果您有任何问题,请不要犹豫,发布一些内容!
【讨论】:
"" 可以用作ch 的参数。
Petar Ivanov对replace a character at a specific index in a string question的回答
字符串在 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);
【讨论】: