Возвращение Название Дело в отношении заглавных букв в середине слова?

Не уверен, что это дубликат (не уверен, как я бы назвал поиск, чтобы найти его наверняка, потому что мой google-fu сегодня слаб)

У меня есть код javascript, чтобы преобразовать первую букву каждого слова в верхний регистр. Мне нужно изменить его так, чтобы он уважал зачетную капитализацию, которую вы могли бы видеть в именах (например: McGuire, MacGonnacle, O'Brien). По сути, идея состоит в том, чтобы заставить первую букву каждого слова капитализироваться, но не переводить все остальные буквы в нижний регистр, если они введены в верхнем регистре.

Здесь фрагмент кода:

function properCase(str) { str = str.toLowerCase(); return str.replace(/(\b)([a-z\WA-Z\W])/g, function (firstLetter) { return firstLetter.toUpperCase(); });
}

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

1 ответ

У вас есть большая часть, просто отбросьте str.toLowerCase();

function properCase(str) { return str.replace(/(\b)([a-z\WA-Z\W])/g,function (firstLetter) { return firstLetter.toUpperCase(); });
}

running properCase('mcCormick') возвращает McCormick

Редактировать:

Взглянув на регулярное выражение, я думаю, вам, вероятно, не нужно это выражение (хотя это зависит от вашего варианта использования, как и все)

function properCase(str) { return str.replace(/(?:^|\s)([a-z])/,function (firstLetter) { return firstLetter.toUpperCase(); });
}

Это будет означать начало любого слова, начинающегося с буквы. Ex properCase('mcCormick is *an excellent duelist') возвращает "McCormick Is *an Excellent Duelist"

licensed under cc by-sa 3.0 with attribution.