s = s.replace(/(\w)(\w*)/g,
function(g0,g1,g2){return g1.toUpperCase() + g2.toLowerCase();});
Регулярное выражение находит слова (здесь определяется с помощью \w
- alphanumerics и подчеркивание) и разделяет их на две группы - первую букву и остальную часть слова. Затем он использует функцию в качестве обратного вызова для установки правильного случая.
Пример: http://jsbin.com/uvase
С другой стороны, это также будет работать - немного меньше регулярных выражений и больше строк манипуляции:
s = s.replace(/\w+/g,
function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase();});
Я должен добавить, что это не паскаль случай вообще, так как у вас есть слово барьеры (helloworld
против hello-world
). Без них проблема почти неразрешима даже со словарем. Это чаще всего называется Title Case, хотя оно не обрабатывает такие слова, как «FBI», «the» или «McDonalds».
пятно на, хотя я думаю Название дело отличается от Pascal Case (Uppercamelcase) заглавных = Double -barrel Pascal Case = Double-Barrel – Blowsie
Титульный вопрос потенциально обманчив. Он имеет четкое значение, которое не соответствует нормальному английскому языку. Titlecase - свойство оболочки Unicode, в основном используется для того, чтобы заглавная буква была только первой буквой. Это относится к некоторым орграфам, отличным от других символов, таких как DZ vs Dz vs dz. Напротив, правильная обложка английских названий работает совсем по-другому, игнорируя короткие предлоги, за исключением первого или последнего слова и т. Д. – tchrist