2017-01-05 3 views
1

Я пытаюсь заглавной буквы каждой буквы после символа / или -. Значение, если дана строкаЗаполните все буквы после/и - символы

this/is/a/pretty-cool/url 

его ожидаемого выходной будут выглядеть

This/Is/A/Pretty-Cool/Url 

Моего код:

string = string.replace(/\/(\b[a-z](?!\s))/g, function(i,e) { return '/'+e.toUpperCase() }); 

который в настоящее время возвращает

this/Is/A/Pretty-cool/Url 

Не совсем там, очевидно.

Как я могу заставить это работать должным образом?

+1

ваша постановка задачи является неполной - вы явитесь хотят капитализировать _first_ характер найден. – Alnitak

ответ

6

Здесь у вас есть простое решение:

string = string.replace(/(^|\/|-)(\S)/g, s=>s.toUpperCase()) 

Вы только соответствовать одному символу либо после начала бечевки, / или -. Это просто, потому что нет проблем с верхним регистром одного из этих символов ('/'.toUpperCase() - '/').

Теперь давайте представим, что вы не хотите заглатывать первую часть (может быть, она отличается от вашей реальной проблемы, может быть, вам небезразлична эта плохая функция, которая должна задерживать "/"), тогда вы использовали бы субмагмы вроде это:

string = string.replace(/(^|\/|-)(\S)/g, (_,a,b)=>a+b.toUpperCase()) 

(но вы не должны идти на такие конечности здесь)

+0

Это сделало трюк. Спасибо друг! – Modelesq

+3

К нисходящей: пожалуйста, просветите меня, в чем проблема? –

0

Начиная с кода вы отсутствует - полукокса.

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

var string = string.replace(/(^|\/|-)(\b[a-z](?!\s))/g, function(i,e) { return i.charAt(0)+e.toUpperCase() }); 

или

var string = string.replace(/(^|\/|-)(\b[a-z](?!\s))/g, function(i,e) { return i.toUpperCase() }); 
0

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

string = string.replace(/(^|\W)(\w)/g, (match, a, b) => a + b.toUpperCase()); 

(o г, используя один и тот же короткий отрезок как @ DenysSéguret):

string = string.replace(/(^|\W)(\w)/g, s => s.toUpperCase()); 
Смежные вопросы