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");

1voto

Matt Wright Punkte 114

Hier ist eine Version, die ich mir ausgedacht habe, wenn Sie Wörter oder einzelne Zeichen an ihrem Index in React/Javascript stylen wollen.

replaceAt( yourArrayOfIndexes, yourString/orArrayOfStrings ) 

Arbeitsbeispiel: https://codesandbox.io/s/ov7zxp9mjq

function replaceAt(indexArray, [...string]) {
    const replaceValue = i => string[i] = <b>{string[i]}</b>;
    indexArray.forEach(replaceValue);
    return string;
}

Und hier ist eine weitere alternative Methode

function replaceAt(indexArray, [...string]) {
    const startTag = '<b>';
    const endTag = '</b>';
    const tagLetter = i => string.splice(i, 1, startTag + string[i] + endTag);
    indexArray.forEach(tagLetter);
    return string.join('');
}

Und noch eine...

function replaceAt(indexArray, [...string]) {
    for (let i = 0; i < indexArray.length; i++) {
        string = Object.assign(string, {
          [indexArray[i]]: <b>{string[indexArray[i]]}</b>
        });
    }
    return string;
}

1voto

mirzak Punkte 1001

Ich habe eine Funktion, die etwas ähnliches tut, was Sie fragen, es prüft, ob ein Zeichen in der Zeichenfolge in einem Array von nicht zulässigen Zeichen ist, wenn es ist, ersetzt es mit ''

    var validate = function(value){
        var notAllowed = [";","_",">","<","'","%","$","&","/","|",":","=","*"];
        for(var i=0; i<value.length; i++){
            if(notAllowed.indexOf(value.charAt(i)) > -1){
               value = value.replace(value.charAt(i), "");
               value = validate(value);
            }
       }
      return value;
   }

1voto

karlo1zg Punkte 182

Hier ist meine Lösung unter Verwendung des ternären und des Map-Operators. Besser lesbar, wartbar und leichter zu verstehen, wenn Sie mich fragen.

Es geht mehr um es6 und bewährte Verfahren.

function replaceAt() {
  const replaceAt = document.getElementById('replaceAt').value;

  const str = 'ThisIsATestStringToReplaceCharAtSomePosition';
  const newStr = Array.from(str).map((character, charIndex) => charIndex === (replaceAt - 1) ? '' : character).join('');

  console.log(`New string: ${newStr}`);
}

<input type="number" id="replaceAt" min="1" max="44" oninput="replaceAt()"/>

0voto

ksp Punkte 132

Angenommen, Sie möchten Folgendes ersetzen Kth Index (0-basierter Index) mit 'Z' . Sie können verwenden Regex um dies zu tun.

var re = var re = new RegExp("((.){" + K + "})((.){1})")
str.replace(re, "$1A$`");

0voto

Yash Punkte 8318

Sie können die folgende Funktion verwenden, um Character ou String an einer bestimmten Stelle eines Strings. Um alle folgenden Übereinstimmungsfälle zu ersetzen, verwenden Sie String.prototype.replaceAllMatches() Funktion.

String.prototype.replaceMatch = function(matchkey, replaceStr, matchIndex) {
    var retStr = this, repeatedIndex = 0;
    for (var x = 0; (matchkey != null) && (retStr.indexOf(matchkey) > -1); x++) {
        if (repeatedIndex == 0 && x == 0) {
            repeatedIndex = retStr.indexOf(matchkey);
        } else { // matchIndex > 0
            repeatedIndex = retStr.indexOf(matchkey, repeatedIndex + 1);
        }
        if (x == matchIndex) {
            retStr = retStr.substring(0, repeatedIndex) + replaceStr + retStr.substring(repeatedIndex + (matchkey.length));
            matchkey = null; // To break the loop.
        }
    }
    return retStr;
};

Test:

var str = "yash yas $dfdas.**";

console.log('Index Matched replace : ', str.replaceMatch('as', '*', 2) );
console.log('Index Matched replace : ', str.replaceMatch('y', '~', 1) );

Ausgabe:

Index Matched replace :  yash yas $dfd*.**
Index Matched replace :  yash ~as $dfdas.**

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