web-dev-qa-db-fra.com

Java Remplacer le caractère à la position spécifique de la chaîne?)

J'essaie de remplacer un caractère à une position spécifique d'une chaîne.

Par exemple:

String str = "hi";

remplace la position de chaîne # 2 (i) par une autre lettre "k"

Comment je ferais ça? Merci!

33
01jayss

Réponse de Petar Ivanov à remplace un caractère à un index spécifique dans une question de chaîne

Les chaînes sont immuables en Java. Vous ne pouvez pas les changer.

Vous devez créer une nouvelle chaîne avec le caractère remplacé.

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

Ou vous pouvez utiliser un StringBuilder:

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

System.out.println(myName);
41
waldyr.ar

Kay!

Tout d’abord, lorsqu’il s’agit de chaînes, vous devez vous référer à leurs positions dans la convention 0 base. Cela signifie que si vous avez une chaîne comme celle-ci:

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


Dans cet esprit, le meilleur moyen de résoudre ce problème est de créer une méthode pour remplacer un caractère à une position donnée dans une chaîne comme celle-ci:

Méthode:

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

Ensuite, vous devriez appeler la méthode 'changeCharInPosition' de cette façon:

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

Si vous avez des questions, n'hésitez pas, postez quelque chose!

15
Chicodelarosa

Pour remplacer un caractère à une position spécifiée:

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

Utilisez StringBuilder:

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

Si vous devez réutiliser une chaîne, utilisez StringBuffer :

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

EDIT:

Notez que StringBuffer est thread-safe, alors que l'utilisation de StringBuilder est plus rapide, mais pas thread-safe.

2
Borzh