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");
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");
Die Arbeit mit Vektoren ist in der Regel am effektivsten, um String zu kontaktieren.
Ich schlage die folgende Funktion vor:
String.prototype.replaceAt=function(index, char) {
var a = this.split("");
a[index] = char;
return a.join("");
}
Führen Sie diesen Ausschnitt aus:
String.prototype.replaceAt=function(index, char) {
var a = this.split("");
a[index] = char;
return a.join("");
}
var str = "hello world";
str = str.replaceAt(3, "#");
document.write(str);
function dothis() {
var x = document.getElementById("x").value;
var index = document.getElementById("index").value;
var text = document.getElementById("text").value;
var length = document.getElementById("length").value;
var arr = x.split("");
arr.splice(index, length, text);
var result = arr.join("");
document.getElementById('output').innerHTML = result;
console.log(result);
}
dothis();
<input id="x" type="text" value="White Dog" placeholder="Enter Text" />
<input id="index" type="number" min="0"value="6" style="width:50px" placeholder="index" />
<input id="length" type="number" min="0"value="1" style="width:50px" placeholder="length" />
<input id="text" type="text" value="F" placeholder="New character" />
<br>
<button id="submit" onclick="dothis()">Run</button>
<p id="output"></p>
Diese Methode eignet sich gut für kurze Zeichenfolgen, kann aber bei größeren Texten langsam sein.
var x = "White Dog";
var arr = x.split(""); // ["W", "h", "i", "t", "e", " ", "D", "o", "g"]
arr.splice(6, 1, 'F');
/*
Here 6 is starting index and 1 is no. of array elements to remove and
final argument 'F' is the new character to be inserted.
*/
var result = arr.join(""); // "White Fog"
Einzeiler unter Verwendung von String.replace mit Callback (keine Emoji-Unterstützung):
// 0 - index to replace, 'f' - replacement string
'dog'.replace(/./g, (c, i) => i == 0? 'f': c)
// "fog"
Erklärt:
//String.replace will call the callback on each pattern match
//in this case - each character
'dog'.replace(/./g, function (character, index) {
if (index == 0) //we want to replace the first character
return 'f'
return character //leaving other characters the same
})
Verallgemeinert man die Antwort von Afanasii Kurakin, ergibt sich folgendes:
function replaceAt(str, index, ch) {
return str.replace(/./g, (c, i) => i == index ? ch : c);
}
let str = 'Hello World';
str = replaceAt(str, 1, 'u');
console.log(str); // Hullo World
Erweitern und erklären wir sowohl den regulären Ausdruck als auch die Ersetzerfunktion:
function replaceAt(str, index, newChar) {
function replacer(origChar, strIndex) {
if (strIndex === index)
return newChar;
else
return origChar;
}
return str.replace(/./g, replacer);
}
let str = 'Hello World';
str = replaceAt(str, 1, 'u');
console.log(str); // Hullo World
Der reguläre Ausdruck .
entspricht genau einem Zeichen. Die g
lässt es jedes Zeichen in einer for-Schleife abgleichen. Die replacer
Funktion wird mit dem Originalzeichen und dem Index des Zeichens in der Zeichenkette aufgerufen. Wir machen eine einfache if
Anweisung, um zu bestimmen, ob wir entweder origChar
ou newChar
.
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.