Próbuję zastąpić znak w określonej pozycji ciąg.Java Zastąp znak w określonej pozycji ciągu?
Na przykład:
String str = "hi";
zastąpić ciąg pozycji nr 2 (I) z inną literą "K"
Jak to zrobić? Dzięki!
Próbuję zastąpić znak w określonej pozycji ciąg.Java Zastąp znak w określonej pozycji ciągu?
Na przykład:
String str = "hi";
zastąpić ciąg pozycji nr 2 (I) z inną literą "K"
Jak to zrobić? Dzięki!
Petar Ivanov jest odpowiedzią na replace a character at a specific index in a string question
String są niezmienne w Javie. Nie możesz ich zmienić.
Musisz utworzyć nowy ciąg znaków z zastąpionym znakiem.
String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);
Albo można użyć StringBuilder:
StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');
System.out.println(myName);
Kay!
Przede wszystkim, gdy mamy do czynienia z łańcuchami, musimy odnieść się do ich pozycji w konwencji 0 bazowej. Oznacza to, że jeśli masz ciąg tak:
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
Mając to na uwadze, najlepszym sposobem rozwiązania tego problemu jest stworzenie metody, aby zastąpić znak w danej pozycji w łańcuchu jak to :
Metoda:
public String changeCharInPosition(int position, char ch, String str){
char[] charArray = str.toCharArray();
charArray[position] = ch;
return new String(charArray);
}
Następnie należy wywołać metodę 'changeCharInPosition' w ten sposób:
String str = "hi";
str = changeCharInPosition(1, 'k', str);
System.out.print(str); //this will return "hk"
Jeśli masz jakieś pytania, nie wahaj się, wyślij coś!
Aby zastąpić znak w określonym położeniu:
public static String replaceCharAt(String s, int pos, char c) {
return s.substring(0,pos) + c + s.substring(pos+1);
}
Pracowałem dla mnie, aby zastąpić kilka znaków z pozycji. –
użytkowania StringBuilder
:
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();
Jeśli trzeba ponownie użyć ciąg, a następnie użyć StringBuffer:
String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) {
sb.setCharAt(1, 'k');
}
EDIT:
Zauważ, że StringBuffer jest thread-safe, podczas korzystania StringBuilder jest szybszy, ale nie bezpieczny wątku.
Czy to pozwala zastąpić znak niczym (pusty/usunąć)? – trusktr
Co masz na myśli przez nic? Pusty ciąg znaków lub ciąg pustych spacji? – Chicodelarosa
Nie wiem, o czym myślałem. Oczywiście pusty łańcuch "" "może być użyty jako argument do' ch'. – trusktr