Использование replace и regex для прописывания первой буквы каждого слова строки в JavaScript - PullRequest
5 голосов
/ 05 октября 2011

Следующее, хотя и избыточное, прекрасно работает:

'leap of, faith'.replace(/([^ \t]+)/g,"$1");

и печатает «скачок веры», но в следующем:

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1);он печатает «вера, вера, вера»

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

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());

, это не работает.Как и

'leap of, faith'.replace(/([^ \t]+)/g,"$1".capitalize);

, так как он, вероятно, использует заглавную букву «1» перед заменой значения группы.

Я хочу сделать это в одну строку, используя метод capitalize () прототипа

1 Ответ

12 голосов
/ 05 октября 2011

Вы можете передать функцию в качестве второго аргумента ".replace ()":

"string".replace(/([^ \t]+)/g, function(_, word) { return word.capitalize(); });

Аргументами функции являются, во-первых, полное совпадение, а затем сопоставляемые группы.В этом случае есть только одна группа («слово»).Возвращаемое значение функции используется в качестве замены.

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