Bardzo proste małe pytanie, ale nie do końca rozumiem, jak to zrobić.
Muszę zastąpić każde wystąpienie „_” spacją, a każde wystąpienie „#” niczym / pustym.
var string = '#Please send_an_information_pack_to_the_following_address:';
Próbowałem tego:
string.replace('#','').replace('_', ' ');
Nie bardzo lubię takie łańcuchowe polecenia. Czy istnieje inny sposób na zrobienie tego w jednym?
javascript
jquery
Shannon Hochkins
źródło
źródło
Odpowiedzi:
Użyj operatora OR (
|
):Możesz także użyć klasy postaci:
Skrzypce
Jeśli chcesz zastąpić skrót jedną rzeczą, a podkreślnik inną, musisz po prostu połączyć łańcuch. Możesz jednak dodać prototyp:
Ale dlaczego nie łańcuch? Nie widzę w tym nic złego.
źródło
#|_
jest[#_]
, a równie dobrze możesz użyć+
dopasowania dowolnych kolejnych meczów w celu poprawy wydajnościstr.replace(/[+ -]/g,'');
po prostu umieść puste miejsce na środku.Łańcuchy są fajne, po co je odrzucać?
W każdym razie tutaj jest inna opcja w jednym zamienniku:
Zastąpienie wybierze „” if match == "#", "" jeśli nie.
[Aktualizacja] Aby uzyskać bardziej ogólne rozwiązanie, możesz przechowywać zastępcze ciągi w obiekcie:
źródło
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
to ułatwia modyfikację replaceChars.Jeśli chcesz zastąpić wiele znaków, możesz wywołać
String.prototype.replace()
argument z argumentem zastępującym będącym funkcją wywoływaną dla każdego dopasowania. Wszystko czego potrzebujesz to obiekt reprezentujący odwzorowanie znaków, którego użyjesz w tej funkcji.Na przykład, jeśli chcesz
a
zastąpićx
,b
zey
ic
zez
można zrobić coś takiego:Wyjście :
234xyz567yyyyxz
źródło
var
sięconst
tutaj. alternatywa dla rozszerzonej obsługi przeglądarki:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Określ
/g
(globalną) flagę w wyrażeniu regularnym, aby zastąpić wszystkie dopasowania zamiast tylko pierwszego:Aby zastąpić jedną postać jedną rzeczą, a inną postacią inną, tak naprawdę nie można się obejść, potrzebując dwóch osobnych wezwań
replace
. Możesz ją abstrakcyjnie przekształcić w funkcję, podobnie jak Doorknob, chociaż prawdopodobnie chciałbym, aby wziął obiekt ze starymi / nowymi parami klucz / wartość zamiast płaskiej tablicy.źródło
Możesz także spróbować tego:
find
odnosi się do tekstu, który można znaleźć, ireplace
do tekstu, który ma zostać zastąpionyZastąpi to znaki bez rozróżniania wielkości liter. Aby zrobić inaczej, wystarczy zmienić flagi Regex zgodnie z wymaganiami. Np .: w przypadku rozróżniania wielkości liter należy wymienić:
źródło
Możesz po prostu spróbować:
to zastąpi., - i # twoim zamiennikiem!
źródło
Oto prosty sposób na zrobienie tego bez RegEx.
Możesz prototypować i / lub buforować rzeczy według potrzeb.
źródło
str.replace(/#|_/g,'')
sed
y polecenia lub à la Unixtr
), to wydaje się, że właściwą odpowiedź.Proszę spróbować:
zastąp ciąg wielu
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
wymienić wiele znaków
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Powodzenia!
źródło
Możesz również przekazać obiekt RegExp do metody zamiany, takiej jak
JavaScript RegExp
źródło
replace
połączeń - to nie pomaga tego uniknąć.yourstring = '# Please send_an_information_pack_to_the_following_address:';
zamień „#” na „” i zastąp „_” spacją
newstring2 to twój wynik
źródło
var str = '#this #is__ __#a test###__';
, że w tym ciągu jest wiele wyraźnych spacji.Oto kolejna wersja wykorzystująca String Prototype. Cieszyć się!
źródło
Nie wiem, czy ile to pomoże, ale chciałem usunąć
<b>
i</b>
od mojego ciągwięc użyłem
więc w zasadzie, jeśli chcesz ograniczyć ograniczoną liczbę postaci i nie marnować czasu, przyda się to.
źródło
Oto funkcja „bezpiecznego HTML” przy użyciu funkcji wielokrotnego zastępowania „zmniejsz” (ta funkcja stosuje każdą zamianę do całego łańcucha, więc zależności między zamiennikami są znaczące).
źródło