780 Stimmen

Wie kann ich ein Zeichen an einem bestimmten Index in JavaScript ersetzen?

Ich habe eine Zeichenkette, sagen wir mal Hello world und ich muss das Zeichen bei Index 3 ersetzen. Wie kann ich ein Zeichen durch Angabe eines Indexes ersetzen?

var str = "hello world";

Ich brauche etwas wie

str.replaceAt(0,"h");

5voto

Aram Kocharyan Punkte 19721

Dies funktioniert ähnlich wie Array.splice :

String.prototype.splice = function (i, j, str) {
    return this.substr(0, i) + str + this.substr(j, this.length);
};

4voto

Scrimothy Punkte 2491

@CemKalyoncu: Danke für die tolle Antwort!

Ich habe sie auch leicht angepasst, um sie der Array.splice-Methode ähnlicher zu machen (und habe @Ates' Hinweis berücksichtigt):

spliceString=function(string, index, numToDelete, char) {
      return string.substr(0, index) + char + string.substr(index+numToDelete);
   }

var myString="hello world!";
spliceString(myString,myString.lastIndexOf('l'),2,'mhole'); // "hello wormhole!"

3voto

Jan Turoň Punkte 28722

Wenn Sie Zeichen in einer Zeichenkette ersetzen wollen, sollten Sie veränderbare Zeichenketten erstellen. Dies sind im Wesentlichen Zeichen-Arrays. Sie könnten eine Fabrik erstellen:

  function MutableString(str) {
    var result = str.split("");
    result.toString = function() {
      return this.join("");
    }
    return result;
  }

Dann können Sie auf die Zeichen zugreifen, und das gesamte Array wird in eine Zeichenfolge umgewandelt, wenn es als Zeichenfolge verwendet wird:

  var x = MutableString("Hello");
  x[0] = "B"; // yes, we can alter the character
  x.push("!"); // good performance: no new string is created
  var y = "Hi, "+x; // converted to string: "Hi, Bello!"

3voto

mbadeveloper Punkte 1192

Sie können den Stringtyp um die Einfügemethode erweitern:

String.prototype.append = function (index,value) {
  return this.slice(0,index) + value + this.slice(index);
};

var s = "New string";
alert(s.append(4,"complete "));

Dann können Sie die Funktion aufrufen:

2voto

MD SHAYON Punkte 6992

Sie können verketten, indem Sie die Sub-String-Funktion verwenden, indem Sie zuerst den Text vor dem Zielindex und nach dem Zielindex auswählen und dann mit Ihrem potenziellen Zeichen oder String verketten. Dies ist besser

const myString = "Hello world";
const index = 3;
const stringBeforeIndex = myString.substring(0, index);
const stringAfterIndex = myString.substring(index + 1);
const replaceChar = "X";
myString = stringBeforeIndex + replaceChar + stringAfterIndex;
console.log("New string - ", myString)

または

const myString = "Hello world";
let index = 3;
myString =  myString.substring(0, index) + "X" + myString.substring(index + 1);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X