web-dev-qa-db-fra.com

Ajouter un caractère dans une chaîne à la position x

public String addLetter(char letter, int position, char[] Word){
    char[]newWord = new char[Word.length+1];

    if(position == 0){
        for(int i = position+1; i<Word.length+1; i++){
            newWord[i] = Word[i-1];
        }
        newWord[position] = letter;
    }else{

    }
    return new String(newWord);
}

J'essaie de créer une méthode dans laquelle une lettre est ajoutée à une chaîne, puis renvoyée. Jusqu'à présent, j'ai pu ajouter un caractère à l'avant de la chaîne, mais je ne sais pas trop comment faire cela au milieu/à la fin. À l'intérieur de la condition préalable, chaque lettre est mise de côté, ce qui laisse de la place pour la nouvelle lettre à l'avant. Cependant, je ne sais pas quoi faire si je veux ajouter quelque chose au milieu, des astuces? 

3
LuftWoofe

Vous pouvez faire quelque chose comme ci-dessous:

Convertissez votre tableau de caractères en chaîne 

   String b = new String("Tutorial");

puis créez StringBuilder

   StringBuilder str = new StringBuilder(b);
   System.out.println("string = " + str);

   // insert character at offset 8
   str.insert(8, 's');

   // print StringBuilder after insertion
   System.out.print("After insertion = ");
   System.out.println(str.toString());// this will print Tutorials
18
Ahmed Gamal

Vous pouvez aussi aller de cette façon:

public String addLetter(char letter, int position, char[] Word) {
    return new StringBuilder(new String(Word)).insert(position, letter).toString();
}
2
Shahid

Une seule boucle, complexité O(n)

public String addLetter(char letter, int position, char[] Word){
    char[]newWord = new char[Word.length+1];

    int offset = 0;
    for(int i=0; i<newWord.length; i++) {
        if(position == i) {
            newWord[i] = letter;
            offset = 1;
        } else {
            newWord[i] = Word[i-offset];
        }
    }

    return new String(newWord);
}
0
blue
private static String insertChar(String Word, char letter, int position) {
        char[] chars = Word.toCharArray();
        char[] newchars = new char[Word.length() + 1];

        for (int i = 0; i < Word.length(); i++) {
            if (i < position)
                newchars[i] = chars[i];
            else
                newchars[i + 1] = chars[i];
        }
        newchars[position] = letter;
        return new String(newchars);
    }
0
Lenin

vous pouvez faire comme ça comme changement de ligne sans manipulation de chaîne api

public String addLetter(char letter, int position, char[] Word) {
        char[] newWord = new char[Word.length + 1];
        int i;
        for (i = Word.length; i >= position; i--) {
            newWord[i] = Word[i-1];     
        }

        newWord[i] = letter;

        while(i>0){
            newWord[--i] = Word[i];
        }

        return new String(newWord);
    }
0
Md Ayub Ali Sarker

Vous pouvez faire quelque chose comme ça:

string = string.substring(0,x) + "c" + string.substring(x, string.length());
0
Roberto Ierman

L’approche la plus simple consiste à utiliser 2 boucles:

char[] newWord = new char[Word.length + 1];

for(int i = 0; i < position; i++) newWord[i] = Word[i];
newWord[position] = letter;
for(int i = position + 1; i < newWord.length; i++) newWord[i] = Word[i - 1];

return new String(newWord);
0
Eng.Fouad

Qu'en est-il de l'utilisation de la méthode String.substring (int startindex, int end)?

Ça devrait être quelque chose comme ça

    public static String addLetter(char letter, int position, String Word){
    String toSupport = "";

    if(position == 0){
       toSupport += letter +Word;
    } else {
        String temp = Word.substring(0, position+1);
        toSupport += temp + Character.toString(letter) + Word.substring(position+1, Word.length());
    }
    return toSupport;
}

  public static void main(String[] args) {
     System.out.println(addLetter('a', 1, "hello"));
  }
0
Gianmarco F.