2012-07-21 40 views

Trả lời

33

Petar Ivanov 's câu trả lời cho replace a character at a specific index in a string question

Chuỗi là không thay đổi trong Java. Bạn không thể thay đổi chúng.

Bạn cần tạo chuỗi mới có ký tự được thay thế.

String myName = "domanokz"; 
String newName = myName.substring(0,4)+'x'+myName.substring(5); 

Hoặc bạn có thể sử dụng một StringBuilder:

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

System.out.println(myName); 
15

Kay!

Trước hết, khi xử lý các chuỗi, bạn phải tham khảo các vị trí của chúng trong quy ước 0 base. Điều này có nghĩa rằng nếu bạn có một chuỗi như thế này:

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 


Với ý nghĩ đó, cách tốt nhất để giải quyết vấn đề này là tạo ra một phương pháp để thay thế một ký tự tại một vị trí nhất định trong một chuỗi như thế này :

phương pháp:

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

Sau đó, bạn nên gọi phương thức 'changeCharInPosition' theo cách này:

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

Nếu bạn có bất kỳ câu hỏi nào, vui lòng đăng nội dung nào đó!

+0

Điều này có cho phép bạn thay thế ký tự không có gì (trống/xóa nó) không? – trusktr

+0

Ý của bạn là gì? Một chuỗi rỗng hoặc một chuỗi các khoảng trống? – Chicodelarosa

+0

Tôi không biết mình đang nghĩ gì. Rõ ràng một chuỗi rỗng '" "' có thể được sử dụng làm đối số cho 'ch'. – trusktr

11

Để thay thế một nhân vật ở một vị trí được chỉ định:

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

Làm việc cho tôi để thay thế vài char từ một vị trí. –

10

Sử dụng StringBuilder:

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

Nếu bạn cần phải sử dụng một chuỗi, sau đó sử dụng StringBuffer:

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

CHỈNH SỬA:

Lưu ý rằng StringBuffer là thread-an toàn, trong khi sử dụng StringBuilder là nhanh hơn, nhưng không thread-safe.

Các vấn đề liên quan