Подтвердить что ты не робот

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

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

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

toUpperCase();

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Ответ 4

просто хотел добавить чистое решение 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
}

console.log(capitalize('hello world'));

Ответ 5

Я предполагаю, что вы могли бы использовать 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: capize".

Ответ 6

Для этого вам даже не нужен Javascript, если вы собираетесь использовать

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

Почему бы не сделать это как css, например

#test,h1,h2,h3 { text-transform: capitalize; }

или сделать это как класс и применить этот класс туда, где вам это нужно

.ucwords { text-transform: capitalize; }

Ответ 7

Вы когда-нибудь слышали о substr()?

Для стартера:

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));


[Обновление:]

Благодаря @FelixKling для подсказки:

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});

Ответ 8

Опираясь на ответ @peter-olson, я выбрал более объектно-ориентированный подход без jQuery:

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"

Пример: http://jsfiddle.net/LzaYH/1/

Ответ 9

var ar = 'foo bar spam egg'.split(/\W/);
for(var i=0; i<ar.length; i++) {
  ar[i] = ar[i].substr(0,1).toUpperCase() + ar[i].substr(1,ar[i].length-1) 
}
ar.join(' '); // Foo Bar Spam Egg

Ответ 10

var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() + 
mystring.substring(1,mystring.length)

console.log(mystring) //gives you Hello World

Ответ 11

Основываясь на ответе @Dementric, это решение готово к вызову с помощью простого метода jQuery, "ucwords"... Спасибо всем, кто внес свой вклад здесь.

$.extend({
ucwords : function(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
}

});

Пример: Это можно вызвать с помощью метода

var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"

Ответ 12

Вы можете использовать text-transform: capitalize; для этой работы -

HTML -

<input type="text" style="text-transform: capitalize;" />

JQuery -

$(document).ready(function (){
   var asdf = "WERTY UIOP";
   $('input').val(asdf.toLowerCase());
});

Попробуйте это

Примечание. Это изменяет только визуальное представление строки. Если вы предупреждаете эту строку, она всегда показывает исходное значение строки.

Ответ 13

Вы можете попробовать этот простой код с функциями ucwords в PHP.

function ucWords(text) {
    return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');

Это будет держать верхний регистр без изменений.

Ответ 14

Строка, которая должна опускаться до заглавной буквы первой буквы.

(Оба используют синтаксис Jquery)

function CapitaliseFirstLetter(elementId) {
    var txt = $("#" + elementId).val().toLowerCase();
    $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
    return $1.toUpperCase(); }));
    }

Кроме того, функция "Заглавная строка" WHOLE:

function CapitaliseAllText(elementId) {
     var txt = $("#" + elementId).val();
     $("#" + elementId).val(txt.toUpperCase());
     }

Синтаксис для использования при событии кликов текстового поля:

onClick="CapitaliseFirstLetter('TextId'); return false"

Ответ 15

Я использовал этот код -

function ucword(str){
    str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) { 
        return replace_latter.toUpperCase();
    });  //Can use also /\b[a-z]/g
    return str;  //First letter capital in each word
}

var uc = ucword("good morning. how are you?");
alert(uc);

Ответ 16

Html:

<input class="capitalize" name="Address" type="text" value="" />

Javascript с jQuery:

$(".capitalize").bind("keyup change", function (e) {
        if ($(this).val().length == 1)
            $(this).val($(this).val().toUpperCase());
        $(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) {
            return letter.toUpperCase();
        }))
    });

Ответ 17

Без JQuery

String.prototype.ucwords = function() {
    str = this.trim();
    return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){
        return s.toUpperCase();
    });
};

console.log('hello world'.ucwords()); // Display Hello World

Ответ 18

 var str = "HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD";
         str = str.replace(
                        /([A-Z])([A-Z]+)/g,
        				function (a, w1, w2) {
                            return w1 + w2.toLowerCase();
                        });
alert(str);

Ответ 19

Вот функция uncode-safe ucwords(), которая дополнительно учитывает двойные фамилии, такие как русские Засс-Ранцев и некоторые благородные имена, такие как Оноре де Бальзак, д'Артаньян, Винсент ван Гог, Отто фон Бисмарк, Сулейман ибн Давуд и т. Д.:

String.prototype.ucwords = function() {
  return this.toLowerCase()
    .replace(/(^|\s|\-)[^\s$]/g, function(m) {
       return m.toUpperCase();
    })
    // French, Arabic and some noble names...
    .replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc.
       return m.toLowerCase();
    })
    .replace(/(^|\s)(D|Д)(['][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / ДАртаньян или дАртаньян
       return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase();
    });
}