Я хочу заменить все вхождения точки ( .
) в строке JavaScript
Например, у меня есть:
var mystring = 'okay.this.is.a.string';
Я хочу получить: okay this is a string
.
Пока что попробовал:
mystring.replace(/./g,' ')
но это заканчивается тем, что вся строка заменяется пробелами.
javascript
string
replace
Омар Абид
источник
источник
Ответы:
Вы должны избегать,
.
потому что это имеет значение «произвольного символа» в регулярном выражении.источник
g
модификатор в конце выражения. Думайте об этом как (g) лобально.Еще одно решение, которое легко понять :)
источник
Быстрее, чем с помощью регулярных выражений ...
РЕДАКТИРОВАТЬ:
Может быть, в то время, когда я сделал этот код, я не использовал jsperf. Но, в конце концов, такое обсуждение совершенно бессмысленно, разница в производительности не стоит разборчивости кода в реальном мире, поэтому мой ответ остается в силе, даже если производительность отличается от подхода регулярных выражений.
РЕДАКТИРОВАТЬ 2:
Я создал библиотеку, которая позволяет вам сделать это, используя свободный интерфейс:
См. Https://github.com/FagnerMartinsBrack/str-replace .
источник
str.toLowerCase()
выйти из цикла по соображениям производительности. Кроме того, манипулирование искомой строкой, вероятно, не оптимально. Я опубликовал ответ с измененной версией: stackoverflow.com/questions/2390789/…источник
Для этого простого сценария я бы также рекомендовал использовать методы, встроенные в javascript.
Вы можете попробовать это:
Приветствую
источник
Я добавляю двойную обратную косую черту к точке, чтобы она работала. Не унывайте.
источник
Это более сжато / читабельно и должно работать лучше, чем опубликованное Фагнером Брэком (toLowerCase не выполняется в цикле):
Применение:
источник
источник
replaceAll('&', '&')
? (по общему признанию это не случай в вопросе OP)&
цикл, поэтому в цикле никогда не заканчивается замена (и строка продолжает расти). Я попробовал это только сейчас, и он заблокировал мой браузер ...Вот еще одна реализация replaceAll. Надеюсь, это кому-нибудь поможет.
Тогда вы можете использовать это:
var myText = "Меня зовут Джордж";
var newText = myText.replaceAll ("Джордж", "Майкл");
источник
string.split(stringToFind).join(stringToReplace)
Пример: я хочу заменить все двойные кавычки (") на одинарные кавычки ('), тогда код будет таким
источник
@ scripto сделаны немного более краткими и без
prototype
:Вот как это складывается: http://jsperf.com/replace-vs-split-join-vs-replaceall/68
источник
источник
источник
Вы можете заменить любое вхождение любой строки / символа, используя объект javasscript RegExp.
Вот код,
источник
источник
createTextNode