Верхняя буква первой переменной

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

До сих пор я пробовал:

toUpperCase();

И не повезло, так как он украшает все буквы.

javascript,jquery,

74

Ответов: 17


199 ов принято

Используйте функцию .replace[MDN], чтобы заменить строчные буквы, которые начинаются с заглавной буквы.

var str = "hello world";
str = str.toLowerCase().replace(/[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"


Изменить: если вы имеете дело с символами слова, отличными от az, то следующее (более сложное) регулярное выражение может лучше соответствовать вашим целям.

var str = "???µN‚N€ ???°?????»??????N‡ bjorn uber naque ????";
str = str.toLowerCase().replace(/^[u00C0-u1FFFu2C00-uD7FFw]|s[u00C0-u1FFFu2C00-uD7FFw]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "?Y?µN‚N€ ?”?°?????»??????N‡ Bjorn Uber Naque ????"


62

Гораздо проще:

$('#test').css('textTransform', 'capitalize');

Я должен дать @Dementic некоторую благодарность за то, что он привел меня по правильному пути. Намного проще, чем вы, ребята, предлагаете.


23

Хороший пример: http://phpjs.org/functions/ucwords:569

function ucwords (str) {
    return (str + '').replace(/^([a-z])|s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(пропущенный комментарий функции из источника для краткости. см. связанный источник для деталей)

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


13

Я предполагаю, что вы могли бы использовать substring () и toUpperCase (), чтобы вытащить первый символ, загладить его, а затем заменить первый символ вашей строки результатом.

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"

Я думаю, это должно сработать для вас. Другое дело, что если эти данные отображаются, вы можете добавить класс в свой контейнер, который имеет свойство CSS «text-transform: capitalize».


11 ов

просто хотел добавить чистое решение для javascript (без JQuery)

function capitalize(str) {
    strVal = '';
    str = str.split(' ');
    for (var chr = 0; chr < str.length; chr++) {
        strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
    }
    return strVal
}
JavaScript, JQuery,