Заглавийте первую букву каждого слова
Я хочу использовать функцию javascript для заглавной буквы первой буквы каждого слова
например:
THIS IS A TEST ---> This Is A Test
this is a TEST ---> This Is A Test
this is a test ---> This Is A Test
Что будет простой функцией javascript
Ответы
Ответ 1
Вот небольшой один вкладыш, который я использую, чтобы выполнить работу
var str = 'this is an example';
str.replace(/\b./g, function(m){ return m.toUpperCase(); });
но Джон Ресиг сделал довольно удивительный script, который обрабатывает много случаев
http://ejohn.org/blog/title-capitalization-in-javascript/
Обновить
Ответ ES6 +:
str.split(' ').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');
Вероятно, еще лучший способ. Он будет работать с ударными символами.
Ответ 2
function capitalizeEachWord(str)
{
var words = str.split(" ");
var arr = [];
for (i in words)
{
temp = words[i].toLowerCase();
temp = temp.charAt(0).toUpperCase() + temp.substring(1);
arr.push(temp);
}
return arr.join(" ");
}
Ответ 3
"tHiS iS a tESt".replace(/[^\s]+/g, function(str){
return str.substr(0,1).toUpperCase()+str.substr(1).toLowerCase();
});
Другой вариант:
"tHiS iS a tESt".replace(/(\S)(\S*)/g, function($0,$1,$2){
return $1.toUpperCase()+$2.toLowerCase();
});
Ответ 4
Это простое решение, которое разбивает предложение на массив, затем перебирает массив, создавая новый массив с заглавными словами.
function capitalize(str){
var strArr = str.split(" ");
var newArr = [];
for(var i = 0 ; i < strArr.length ; i++ ){
var FirstLetter = strArr[i].charAt(0).toUpperCase();
var restOfWord = strArr[i].slice(1);
newArr[i] = FirstLetter + restOfWord;
}
return newArr.join(' ');
}
Ответ 5
посмотрите ucwords from php.js - похоже, это то, что вы ищете. в основном, это:
function ucwords (str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
обратите внимание, что THIS IS A TEST
вернет THIS IS A TEST
, поэтому вам придется использовать его следующим образом:
var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring.toLowerCase());
или немного измените функцию:
function ucwords (str) {
str = (str + '').toLowerCase();
return str.replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring); // This Is A Test
Ответ 6
Это будет использовать каждое слово, разделенное пробелом или тире
function capitalize(str){
str = str.toLowerCase();
return str.replace(/([^ -])([^ -]*)/gi,function(v,v1,v2){ return v1.toUpperCase()+v2; });
}
Примеры:
- я lOvE oRanges = > Я люблю апельсины.
- синтаксис strAnge-looKing = > странный синтаксис
и т.д.
Ответ 7
Если вы не против использовать библиотеку, вы можете использовать Sugar.js capitalize()
capitalize (all = false) Заглавная буква первого символа в строка и сокращает все остальные буквы. Если все верно, все слова в строка будет заглавной.
Пример:
'hello kitty'.capitalize() -> 'Hello kitty'
'hello kitty'.capitalize(true) -> 'Hello Kitty'
Ответ 8
вы также можете использовать подход ниже, используя фильтр:
function Ucwords(str){
var words = str.split(' ');
var arr = [];
words.filter(function(val){
arr.push(val.charAt(0).toUpperCase()+ val.substr(1).toLowerCase());
})
console.log(arr.join(" ").trim());
return arr.join(" ").trim();
}
Ucwords("THIS IS A TEST") //This Is A Test
Ucwords("THIS ") //This