Ich habe zwei Variablen und muss an der durch dargestellten Stelle eine Zeichenfolge b
in eine Zeichenfolge einfügen . Das gesuchte Ergebnis ist "Ich will einen Apfel". Wie kann ich das mit JavaScript machen?a
position
var a = 'I want apple';
var b = ' an';
var position = 6;
javascript
Sami
quelle
quelle
var output = [a.slice(0, position + 1), b, a.slice(position)].join('');
, den OPs "Ich will einen Apfel" anstelle von "Ich will einen Apfel" zu geben.Bearbeiten: ersetzt
.substr
durch.substring
weil.substr
ist jetzt eine Legacy-Funktion (per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr )quelle
String.prototype.substr
ist jetzt veraltet. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…substring
In diesem Fall handelt es sich um einen direkten Ersatz für das Veraltetesubstr
, sodass die Antwort lautet :var output = a.substring(0, position) + b + a.substring(position);
..substring
Sie können diese Funktion zur Zeichenfolgenklasse hinzufügen
Damit Sie es für jedes Zeichenfolgenobjekt verwenden können:
quelle
Die Verwendung von ES6-String-Literalen wäre viel kürzer:
quelle
Vielleicht ist es sogar noch besser, wenn Sie die Position mit indexOf () wie folgt bestimmen :
Rufen Sie dann die Funktion folgendermaßen auf:
Beachten Sie, dass ich im Funktionsaufruf ein Leerzeichen nach dem "an" und nicht in die return-Anweisung setze.
quelle
Die Underscore.String- Bibliothek verfügt über eine Funktion zum Einfügen
wie so
quelle
Versuchen
Code-Snippet anzeigen
oder Regexp-Lösung
Code-Snippet anzeigen
quelle
Dies wäre langsamer, kümmert sich jedoch um das Hinzufügen von Leerzeichen vor und nach dem. Außerdem müssen Sie den Wert der Position ändern (auf 2, es ist jetzt intuitiver).
quelle
Schnelle Lösung! Wenn Sie kein Leerzeichen manuell hinzufügen möchten, können Sie dies tun:
(edit: ich sehe, dass dies oben tatsächlich beantwortet wird, sorry!)
quelle
Wenn das Lookbehind von ES2018 verfügbar ist , eine weitere Regexp-Lösung, die es verwendet, um an einer Position mit einer Breite von Null nach dem N-ten Zeichen zu "ersetzen" (ähnlich wie bei @Kamil Kiełczewski, jedoch ohne die Anfangszeichen in einer Erfassungsgruppe zu speichern):
Code-Snippet anzeigen
quelle
Nun, nur eine kleine Änderung, weil die oben genannten Lösungsausgaben
anstatt
Um die Ausgabe als zu erhalten
Verwenden Sie den folgenden geänderten Code
quelle