Я шукав в Інтернеті, не можу знайти нічого, що допомогло б мені. Я хочу зробити першу літеру кожного слова великим регістром у межах змінної.
Поки що я пробував:
toUpperCase();
І не пощастило, оскільки він пише великими літерами всі літери.
Я шукав в Інтернеті, не можу знайти нічого, що допомогло б мені. Я хочу зробити першу літеру кожного слова великим регістром у межах змінної.
Поки що я пробував:
toUpperCase();
І не пощастило, оскільки він пише великими літерами всі літери.
Відповіді:
Використовуйте функцію .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();
});
}
(пропущений коментар функції з джерела для стислості. детальніше див. у зв’язаному джерелі)
EDIT: Зверніть увагу, що ця функція пише великі літери першої літери кожного слова (як задає ваше запитання), а не лише першу літеру рядка (як задає назва вашого запитання)
просто хотів додати чисте рішення 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
#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));
[Оновлення:]
Дякую @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відповідно до вимог javascript toUpperCase()та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());
}
вихід: Хірен Раяні
Використовуйте код як визначену користувачем функцію або пряму
Ви можете спробувати цей простий код з функціями ucwords в PHP.
function ucWords(text) {
return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('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($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 );
Результат: "Зроблено в Індії"