Я искал в Интернете, не могу найти ничего, что могло бы мне помочь. Я хочу сделать первую букву каждого слова заглавной в переменной.
Пока я пробовал:
toUpperCase();
И не повезло, так как все буквы заглавные.
javascript
jquery
Райан
источник
источник
Ответы:
Используйте функцию
.replace
[MDN], чтобы заменить строчные буквы, начинающиеся на слово, на прописную.var str = "hello world"; str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); }); alert(str); //Displays "Hello World"
Изменить: если вы имеете дело со словесными символами, отличными от просто az, то следующее (более сложное) регулярное выражение может лучше соответствовать вашим целям.
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 Αλφα"
источник
Björn Lüchinger
, это становитсяBjöRn LüChinger
. Что-нибудь исправить?str[0].toUpperCase() + str.slice(1)
var first = str.slice(0, str.indexOf(' ')); str = first.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }) + str.substr(first.length);
и специальные символы.Намного более простой способ:
$('#test').css('textTransform', 'capitalize');
Я должен отдать должное @Dementic за то, что он направил меня по правильному пути. Намного проще, чем то, что вы предлагаете.
источник
text-transform:capitalize
не повлияет на ВСЕ ЗАГЛАВНЫЕ буквы.http://phpjs.org/functions/ucwords:569 есть хороший пример.
function ucwords (str) { return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) { return $1.toUpperCase(); }); }
(для краткости опущен комментарий функции из источника. Подробности см. в связанном источнике)
РЕДАКТИРОВАТЬ: обратите внимание, что эта функция вводит в верхний регистр первую букву каждого слова (как задает ваш вопрос), а не только первую букву строки (как требует заголовок вашего вопроса)
источник
просто хотел добавить чистое решение 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'));
источник
c < str.length;
должно бытьchr < str.length;
Я предполагаю, что вы можете использовать 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, если вы собираетесь использовать
$('#test').css('textTransform', 'capitalize');
Почему бы не сделать это как css
или сделайте это как класс и примените этот класс там, где вам это нужно
источник
Слышали когда-нибудь
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); });
источник
text()
четыре раза, передайте функциюtext()
:$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize');
Кстати, это лучший ответ здесь. Я отправлю это как ответ.document.getElementById('test').style.textTransform='capitalize';
Основываясь на ответе @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/
источник
toUpperCaseWords
в соответствии с javascripttoUpperCase()
иtoLowerCase()
var mystring = "hello World" mystring = mystring.substring(0,1).toUpperCase() + mystring.substring(1,mystring.length) console.log(mystring) //gives you Hello World
источник
Самый простой способ
let str="hiren raiyani" str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
определяемая пользователем функция:
function capitalize(str){ return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase()); }
вывод: Hiren Raiyani
Используйте код в качестве пользовательской функции или напрямую
источник
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
источник
Вы можете попробовать этот простой код с функциями ucwords в PHP.
function ucWords(text) { return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' '); } ucWords('hello WORLD');
Это сохранит верхний регистр без изменений.
источник
Это очень просто:
string = 'test'; newString = string[0].toUpperCase() + string.slice(1); alert(newString);
источник
Полностью основанное на ответе @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($1) { return $1.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(); })) });
источник
Без 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
источник
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);
источник
Вот функция 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(); }); }
источник
Самый простой способ заглавной буквы в JS
var string = "made in india"; string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return letter.toUpperCase();}); alert(string );
Результат: «Сделано в Индии».
источник