.replace ('', '-') заменит только первый пробел - PullRequest
1 голос
/ 26 марта 2012

я пытаюсь

Для преобразования: 'any string separated with blankspaces' в

'any-string-separated-with-blankspaces'

Я связываю с .replace(' ','-'), но это заменит только сначала ... почему? как я могу заменить все?

http://jsfiddle.net/7ycg3/

Ответы [ 5 ]

5 голосов
/ 26 марта 2012

Вам нужно регулярное выражение для этого

.replace(/\s/g,'-')

\s заменит любой символ пробела. Если вы строго придерживаетесь «нормального» пробела, используйте

/ /g

вместо.

1 голос
/ 26 марта 2012

Это не указано особенно четко в документах MDN для String.replace, но String.replace выполняет только одну замену, если в него не включен флаг g с использованием регулярного выражения, а не строка:

Чтобы выполнить глобальный поиск и замену, либо включите переключатель g в регулярное выражение, либо, если первый параметр является строкой, включите g в параметр flags.

(Но учтите, что параметр flags нестандартен, как они там отмечают).

Таким образом, вы хотите tag.replace(/ /g,'-').

1 голос
/ 26 марта 2012

Вам необходимо использовать регулярное выражение в качестве первого параметра, используя модификатор /g, чтобы он заменял все вхождения:

var replaced = input.replace(/ /g,'-');

Если вы хотите заменить какой-либо символ пробела вместо буквального пробела, вам необходимо использовать \s вместо в регулярном выражении; и если вы хотите заменить любое количество последовательных пробелов на один дефис, то добавьте + после или \s.

0 голосов
/ 26 марта 2012

Используйте /\s/g вместо ' ' в вашем вопросе

0 голосов
/ 26 марта 2012

http://jsfiddle.net/7ycg3/1/

Использовать регулярное выражение с /g модификатором

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...