2012-07-21 151 views

回答

33

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); 
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 


考慮到這一點,解決這個問題的最好辦法是創建一個方法在給定位置在這樣的字符串替換字符:

方法:

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); 
} 
+0

這是否讓你用什麼都不換(空/刪除它)? – trusktr 2012-10-06 18:54:43

+0

你什麼意思?一個空字符串或一串空格? – Chicodelarosa 2013-10-06 19:38:10

+0

我不知道我在想什麼。顯然一個空字符串''「'可以用作'ch'的參數。 – trusktr 2013-10-09 02:04:28

11

要在指定位置替換字符

StringBuilder sb = new StringBuilder(str); 
sb.setCharAt(i - 1, 'k'); 
str = sb.toString(); 
+0

爲我工作,以取代一個職位的幾個字符。 – 2016-01-20 07:22:49

2

如果您需要重新使用一個字符串,然後使用StringBuffer的

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

編輯:

注意StringBuffer的是線程安全的,在使用StringBuilder的快,但不是線程安全的。