Chcę zastąpić wszystkie wystąpienia kropki (.
) w ciągu JavaScript
Mam na przykład:
var mystring = 'okay.this.is.a.string';
Chcę dostać: okay this is a string
.
Do tej pory próbowałem:
mystring.replace(/./g,' ')
ale kończy się to tym, że cały ciąg zostaje zastąpiony spacjami.
javascript
string
replace
Omar Abid
źródło
źródło
Odpowiedzi:
Musisz uciec przed,
.
ponieważ ma on znaczenie „dowolnego znaku” w wyrażeniu regularnym.źródło
g
modyfikator na końcu wyrażenia. Pomyśl o tym jak (g) lobalnie.Jeszcze jedno łatwe do zrozumienia :)
źródło
Szybszy niż użycie wyrażenia regularnego ...
EDYTOWAĆ:
Może w czasie, gdy tworzyłem ten kod, nie używałem jsperf. Ale w końcu taka dyskusja jest całkowicie bezcelowa, różnica w wydajności nie jest warta czytelności kodu w świecie rzeczywistym, więc moja odpowiedź jest nadal aktualna, nawet jeśli wydajność różni się od podejścia wyrażenia regularnego.
EDIT2:
Stworzyłem bibliotekę, która pozwala ci to robić za pomocą płynnego interfejsu:
Zobacz https://github.com/FagnerMartinsBrack/str-replace .
źródło
str.toLowerCase()
poza pętlę ze względu na wydajność. Ponadto manipulowanie ciągiem, którego szukasz, jest prawdopodobnie mniej niż optymalne. Odpowiedziałem w zmodyfikowanej wersji: stackoverflow.com/questions/2390789/...źródło
W tym prostym scenariuszu zaleciłbym również użycie metod, które są wbudowane w javascript.
Możesz spróbować:
Pozdrowienia
źródło
Do kropki dodaję podwójny ukośnik odwrotny, aby działał. Dopingować.
źródło
Jest to bardziej zwięzłe / czytelne i powinno działać lepiej niż to opublikowane przez Fagner Brack (toLowerCase nie jest wykonywane w pętli):
Stosowanie:
źródło
źródło
replaceAll('&', '&')
:? (co prawda nie jest to kwestia pytania OP)&
tak, że w pętli nigdy nie zabraknie rzeczy do zastąpienia (a ciąg ciągle rośnie). Właśnie tego spróbowałem i to zablokowało moją przeglądarkę ...Oto kolejna implementacja replaceAll. Mam nadzieję, że to komuś pomoże.
Następnie możesz go użyć:
var myText = "Nazywam się George";
var newText = myText.replaceAll („George”, „Michael”);
źródło
string.split(stringToFind).join(stringToReplace)
Przykład: Chcę zamienić wszystkie podwójne cudzysłowy („) na pojedyncze cudzysłowy ('). Wtedy kod będzie taki
źródło
@ scripto jest nieco bardziej zwięzłe i bez
prototype
:Oto, jak się układa: http://jsperf.com/replace-vs-split-join-vs-replaceall/68
źródło
źródło
źródło
można zastąpić wszystkie wystąpienia dowolnego łańcucha / znaku przy użyciu obiektu javasscript RegExp.
Oto kod
źródło
źródło
createTextNode