Tôi đang cố gắng thay thế một ký tự tại một vị trí cụ thể của một chuỗi.Java Thay thế ký tự tại vị trí cụ thể của chuỗi?
Ví dụ:
String str = "hi";
thay thế vị trí chuỗi # 2 (i) một lá thư khác "k"
Làm thế nào tôi sẽ làm điều này? Cảm ơn!
Tôi đang cố gắng thay thế một ký tự tại một vị trí cụ thể của một chuỗi.Java Thay thế ký tự tại vị trí cụ thể của chuỗi?
Ví dụ:
String str = "hi";
thay thế vị trí chuỗi # 2 (i) một lá thư khác "k"
Làm thế nào tôi sẽ làm điều này? Cảm ơn!
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);
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 đó!
Để 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);
}
Làm việc cho tôi để thay thế vài char từ một vị trí. –
Sử dụng StringBuilder
:
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
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.
Đ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
Ý 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
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