Заглавная первая буква переменной
Я искал в Интернете не можете найти ничего, чтобы помочь мне. Я хочу сделать первую букву каждого слова в верхнем регистре в переменной.
до сих пор я пробовал:
toUpperCase();
и не повезло, так как это прописные все буквы.
17 ответов:
использовать
.replace
[MDN] функция для замены строчных букв, которые начинаются слово с заглавной буквы.var str = "hello world"; str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Hello World"
Edit: если вы имеете дело с символами слов, отличными от A-z, то следующее (Более сложное) регулярное выражение может лучше соответствовать вашим целям.
var str = "петр данилович björn über ñaque αλφα"; str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Петр Данилович Björn Über Ñaque Αλφα"
гораздо проще:
$('#test').css('textTransform', 'capitalize');
я должен отдать должное @Dementic за то, что он привел меня на правильный путь. Гораздо проще, чем то, что вы, ребята, предлагаете.
http://phpjs.org/functions/ucwords:569 есть хороший пример
function ucwords (str) { return (str + '').replace(/^([a-z])|\s+([a-z])/g, function () { return .toUpperCase(); }); }
(опущен комментарий функции от источника для краткости. пожалуйста, см. В разделе Связанные источник для подробной информации)
EDIT: обратите внимание, что эта функция прописывает первую букву каждого слова (как задается ваш вопрос), а не только первую букву строки (как задается заголовок вашего вопроса)
Я предполагаю, что вы можете использовать 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".
просто хотел добавить чистое решение 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'));
для этого Вам даже не нужен Javascript, если вы собираетесь использовать
$('#test').css('textTransform', 'capitalize');
почему бы не сделать это как css, как
#test,h1,h2,h3 { text-transform: capitalize; }
или сделать это как класс и применить этот класс туда, где вам это нужно
.ucwords { text-transform: capitalize; }
когда-нибудь слышал о
substr()
?Для начала :
$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
[Update:]спасибо @FelixKling за подсказку:
$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase() + text.substr(1); });
основываясь на ответе @ 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/
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
var mystring = "hello World" mystring = mystring.substring(0,1).toUpperCase() + mystring.substring(1,mystring.length) console.log(mystring) //gives you Hello World
полностью основываясь на ответе @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"
можно использовать
text-transform: capitalize;
для этой работы -HTML -
<input type="text" style="text-transform: capitalize;" />
JQuery -
$(document).ready(function (){ var asdf = "WERTY UIOP"; $('input').val(asdf.toLowerCase()); });
Примечание: это только изменить визуальное представление строки. Если вы предупредите эту строку, она всегда будет показывать исходное значение строки.
строка для понижения перед заглавной буквой первой буквы.
(оба используют синтаксис Jquery)
function CapitaliseFirstLetter(elementId) { var txt = $("#" + elementId).val().toLowerCase(); $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function() { return .toUpperCase(); })); }
кроме того, функция Для заглавной буквы всей строки:
function CapitaliseAllText(elementId) { var txt = $("#" + elementId).val(); $("#" + elementId).val(txt.toUpperCase()); }
синтаксис для использования в событии щелчка текстового поля:
onClick="CapitaliseFirstLetter('TextId'); return false"
я использовал этот код -
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);
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(); })) });