398 Stimmen

Ersetzen Sie mehrere Zeichen in einem replace-Aufruf

Ich muss jede Instanz von '_' durch ein Leerzeichen ersetzen und jede Instanz von '#' durch nichts/leer.

var string = '#Bitte send_an_informationspaket_an_die_folgende_Adresse:';

Ich habe das versucht:

string.replace('#','').replace('_', ' ');

Ich mag es nicht wirklich, Befehle wie diese aneinanderzureihen. Gibt es einen anderen Weg, um es in einem zu machen?

0voto

Yathiŋ K Rào Punkte 5
String.prototype.replaceAll=function(obj,keydata='key'){
 const keys=keydata.split('key');
return Object.entries(obj).reduce((a,[key,val])=> a.replace(new RegExp(`${keys[0]}${key}${keys[1]}`,'g'),val),this)
}

const data='hids dv sdc sd {yathin} {ok}'
console.log(data.replaceAll({yathin:12,ok:'hi'},'{key}'))

0voto

Dies funktioniert auch für Jiddisch andere Zeichen wie NEKUDES

var string = "";

var string_norm = string.replace(/[]/g, '');
document.getElementById("demo").innerHTML = (string_norm);

0voto

Abraham Brookes Punkte 1504

Nicht sicher, warum noch niemand diese Lösung angeboten hat, aber ich finde, dass sie ziemlich gut funktioniert:

var string = '#Bitte_senden_Sie_ein_Informationspaket_an_die_folgende_Adresse:'
var placeholders = [
    "_": " ",
    "#": ""
]

for(var placeholder in placeholders){
    while(string.indexOf(placeholder) > -1) {
        string = string.replace(placeholder, placeholders[placeholder])
    }
}

Sie können so viele Platzhalter hinzufügen, wie Sie möchten, ohne Ihre Funktion aktualisieren zu müssen. Einfach!

0voto

Pit Punkte 303

Eine Funktion und eine Prototyp-Funktion.

String.prototype.replaceAll = function (search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'gi'), replacement);
};

var map = {
    '&': 'und ',
    '[?]': '',
    '/': '',
    '#': '',
    // '|': '#65 ',
    // '[\]': '#66 ',
    // '\\': '#67 ',
    // '^': '#68 ',
    '[?&]': ''
};

var map2 = [
    {'&': 'und '},
    {'[?]': ''},
    {'/': ''},
    {'#': ''},                
    {'[?&]': ''}
];

name = replaceAll2(name, map2);
name = replaceAll(name, map);

function replaceAll2(str, map) {            
    return replaceManyStr(map, str);
}  

function replaceManyStr(replacements, str) {
    return replacements.reduce((accum, t) => accum.replace(new RegExp(Object.keys(t)[0], 'g'), t[Object.keys(t)[0]]), str);
}

0voto

chiukaun Punkte 3

Was ist, wenn Sie einfach eine verkürzte Form des If-Else-Statements verwenden? macht es zu einem Einzeiler.

const betterWriting = string.replace(/[#_]/gi , d => d === '#' ? '' : ' ' );

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