Apa pendekatan terbaik untuk menggunakan huruf besar dalam string?
Apa pendekatan terbaik untuk menggunakan huruf besar dalam string?
Jawaban:
/**
* Capitalizes first letters of words in string.
* @param {string} str String to be modified
* @param {boolean=false} lower Whether all other letters should be lowercased
* @return {string}
* @usage
* capitalize('fix this string'); // -> 'Fix This String'
* capitalize('javaSCrIPT'); // -> 'JavaSCrIPT'
* capitalize('javaSCrIPT', true); // -> 'Javascript'
*/
const capitalize = (str, lower = false) =>
(lower ? str.toLowerCase() : str).replace(/(?:^|\s|["'([{])+\S/g, match => match.toUpperCase());
;
capitalize(' javascript'); // -> ' Javascript'
capitalize('бабушка курит трубку'); // -> 'Бабушка Курит Трубку'
capitalize('località àtilacol') // -> 'Località Àtilacol'
capitalize(`"quotes" 'and' (braces) {braces} [braces]`); // -> "Quotes" 'And' (Braces) {Braces} [Braces]
'CHECK THIS OUT'.capitalize(true) -> "Check This Out"
,. true
Parameter pikiran .
Implementasi terpendek untuk huruf kapital dalam string adalah berikut ini menggunakan fungsi panah ES6:
'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'
Implementasi yang kompatibel dengan ES5:
'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'
Regex pada dasarnya cocok dengan huruf pertama dari setiap kata dalam string yang diberikan dan hanya mengubah huruf itu menjadi huruf besar:
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
Regex ini cocok dengan huruf pertama dan setiap huruf non-spasi putih didahului dengan spasi putih dalam string yang diberikan dan hanya mengubah huruf itu menjadi huruf besar:
Grup yang tidak menangkap bisa digunakan di sini sebagai berikut /(?:^|\s)\S/g
meskipun g
bendera dalam regex kami tidak akan menangkap sub-kelompok dengan desain.
Bersulang!
päijät-häme
menjadiPäIjäT-HäMe
EisbäRen
adalah salah satu hasilnya, misalnya.
Päijät-Häme
, tetapi setidaknya di ruang putih Chrome tidak menyertakan tanda hubung (-), sehingga bagian kedua nama tersebut tidak ditulis dengan huruf besar . Dapat diperbaiki sebagai /(^|\s|-)\S/g
.
function capitalize(s){
return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};
capitalize('this IS THE wOrst string eVeR');
output: "Ini String Terburuk Yang Pernah Ada"
Tampaknya solusi ini menggantikan milik saya: https://stackoverflow.com/a/7592235/104380
The jawaban yang diberikan oleh vsync bekerja selama Anda tidak memiliki huruf beraksen dalam string masukan.
Saya tidak tahu alasannya, tetapi ternyata \b
dalam pertandingan regexp juga beraksen huruf (diuji pada IE8 dan Chrome), jadi string seperti "località"
akan salah kapitalisasi dikonversi menjadi"LocalitÀ"
(à
huruf kapital akan huruf tersebut dikapitalisasi karena regexp menganggap itu kata batas)
Fungsi yang lebih umum yang berfungsi juga dengan huruf beraksen adalah yang ini:
String.prototype.toCapitalize = function()
{
return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); });
}
Anda bisa menggunakannya seperti ini:
alert( "hello località".toCapitalize() );
" javascript".toCapitalize() -> " javascript"
Karena semua orang telah memberi Anda jawaban JavaScript yang Anda minta, saya akan memasukkan properti CSS itu text-transform: capitalize
akan melakukan ini.
Saya menyadari ini mungkin bukan yang Anda minta - Anda belum memberi kami salah satu konteks di mana Anda menjalankan ini - tetapi jika itu hanya untuk presentasi, saya pasti akan menggunakan alternatif CSS.
John Resig (dari jQuery fame) mem-porting skrip perl, ditulis oleh John Gruber, ke JavaScript. Skrip ini menggunakan huruf kapital dengan cara yang lebih cerdas, misalnya, huruf kapital tidak menggunakan huruf kecil seperti 'dari' dan 'dan'.
Anda dapat menemukannya di sini: Kapitalisasi Judul dalam JavaScript
Menggunakan JavaScript dan html
String.prototype.capitalize = function() {
return this.replace(/(^|\s)([a-z])/g, function(m, p1, p2) {
return p1 + p2.toUpperCase();
});
};
<form name="form1" method="post">
<input name="instring" type="text" value="this is the text string" size="30">
<input type="button" name="Capitalize" value="Capitalize >>" onclick="form1.outstring.value=form1.instring.value.capitalize();">
<input name="outstring" type="text" value="" size="30">
</form>
Pada dasarnya, Anda dapat melakukannya string.capitalize()
dan itu akan menggunakan huruf kapital setiap huruf pertama dari setiap kata.
Sumber: http://www.mediacollege.com/internet/javascript/text/case-capitalize.html
if (object.capitalize) {...} else {String.prototype.capitalize = function()....}
di mana objek bertipe String
. Jadi, sebenarnya cukup sederhana.
Jawaban Ivo baik, tetapi saya lebih suka tidak cocok \w
karena tidak perlu menggunakan huruf kapital 0-9 dan AZ. Kita bisa mengabaikannya dan hanya cocok dengan az.
'your string'.replace(/\b[a-z]/g, match => match.toUpperCase())
// => 'Your String'
Ini hasil yang sama, tapi saya pikir lebih jelas dalam hal kode dokumentasi diri.
"Är Toaletten"
. Jawaban Anda, bertahun-tahun setelah jawaban yang sangat baik diberikan, tidak berkontribusi pada diskusi ..
/\b\w/g
juga gagal untuk huruf non-Inggris. Tidak semua orang berurusan dengan karakter unicode, dan ini akan membantu mereka yang ingin tidak.
console.log( _.capitalize('ÿöur striñg') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Cara ES6 ringkas untuk melakukannya mungkin terlihat seperti ini.
const capitalizeFirstLetter = s => s.charAt(0).toUpperCase() + s.slice(1)
Ini hanya memperkuat huruf pertama dan tidak memengaruhi casing selebihnya.
Solusi saya:
String.prototype.toCapital = function () {
return this.toLowerCase().split(' ').map(function (i) {
if (i.length > 2) {
return i.charAt(0).toUpperCase() + i.substr(1);
}
return i;
}).join(' ');
};
Contoh:
'álL riGht'.toCapital();
// Returns 'Áll Right'
'a áAA. bb . bbb .cc .d'.toCapital();
=>a Áaa. bb . Bbb .cc .d
Ini harus mencakup sebagian besar kasus penggunaan dasar.
const capitalize = (str) => {
if (typeof str !== 'string') {
throw Error('Feed me string')
} else if (!str) {
return ''
} else {
return str
.split(' ')
.map(s => {
if (s.length == 1 ) {
return s.toUpperCase()
} else {
const firstLetter = s.split('')[0].toUpperCase()
const restOfStr = s.substr(1, s.length).toLowerCase()
return firstLetter + restOfStr
}
})
.join(' ')
}
}
capitalize('THIS IS A BOOK') // => This Is A Book
capitalize('this is a book') // => This Is A Book
capitalize('a 2nd 5 hour boOk thIs weEk') // => A 2nd 5 Hour Book This Week
Sunting: Peningkatan keterbacaan pemetaan.
/\b\w/g
...
Dosis solusi ini tidak menggunakan regex, mendukung karakter beraksen dan juga didukung oleh hampir setiap browser.
function capitalizeIt(str) {
if (str && typeof(str) === "string") {
str = str.split(" ");
for (var i = 0, x = str.length; i < x; i++) {
if (str[i]) {
str[i] = str[i][0].toUpperCase() + str[i].substr(1);
}
}
return str.join(" ");
} else {
return str;
}
}
Pemakaian:
console.log (capitalizeIt ('çao 2nd inside Javascript program'));
Keluaran:
Çao 2nd Inside Javascript Programme
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html adalah salah satu dari banyak jawaban di luar sana.
Google dapat menjadi semua yang Anda butuhkan untuk masalah seperti itu.
Pendekatan naif adalah dengan membagi string dengan spasi, huruf besar huruf pertama dari setiap elemen dari array yang dihasilkan dan bergabung kembali bersama-sama. Ini meninggalkan kapitalisasi yang ada sendirian (mis. HTML tetap HTML dan tidak menjadi sesuatu yang konyol seperti Html). Jika Anda tidak menginginkannya, ubah seluruh string menjadi huruf kecil sebelum membaginya.
Kode ini menggunakan huruf kapital kata setelah titik:
function capitalizeAfterPeriod(input) {
var text = '';
var str = $(input).val();
text = convert(str.toLowerCase().split('. ')).join('. ');
var textoFormatado = convert(text.split('.')).join('.');
$(input).val(textoFormatado);
}
function convert(str) {
for(var i = 0; i < str.length; i++){
str[i] = str[i].split('');
if (str[i][0] !== undefined) {
str[i][0] = str[i][0].toUpperCase();
}
str[i] = str[i].join('');
}
return str;
}
Saya suka pergi dengan proses yang mudah. Pertama Ubah string menjadi Array untuk iterasi mudah, kemudian menggunakan fungsi peta mengubah setiap kata seperti yang Anda inginkan.
function capitalizeCase(str) {
var arr = str.split(' ');
var t;
var newt;
var newarr = arr.map(function(d){
t = d.split('');
newt = t.map(function(d, i){
if(i === 0) {
return d.toUpperCase();
}
return d.toLowerCase();
});
return newt.join('');
});
var s = newarr.join(' ');
return s;
}
Jquery atau Javascipt tidak menyediakan metode bawaan untuk mencapai ini.
Transformasi uji CSS (text-transform: capitalize;) tidak benar-benar memanfaatkan data string tetapi menunjukkan rendering yang dikapitalisasi di layar.
Jika Anda mencari cara yang lebih sah untuk mencapai ini di tingkat data menggunakan vanillaJS biasa, gunakan solusi ini =>
var capitalizeString = function (word) {
word = word.toLowerCase();
if (word.indexOf(" ") != -1) { // passed param contains 1 + words
word = word.replace(/\s/g, "--");
var result = $.camelCase("-" + word);
return result.replace(/-/g, " ");
} else {
return $.camelCase("-" + word);
}
}
Gunakan ini:
String.prototype.toTitleCase = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
let str = 'text';
document.querySelector('#demo').innerText = str.toTitleCase();
<div class = "app">
<p id = "demo"></p>
</div>
Anda dapat menggunakan yang berikut ini untuk menggunakan huruf besar dalam string:
function capitalizeAll(str){
var partes = str.split(' ');
var nuevoStr = "";
for(i=0; i<partes.length; i++){
nuevoStr += " "+partes[i].toLowerCase().replace(/\b\w/g, l => l.toUpperCase()).trim();
}
return nuevoStr;
}
Ada juga locutus: https://locutus.io/php/strings/ucwords/ yang mendefinisikannya seperti ini:
function ucwords(str) {
// discuss at: http://locutus.io/php/ucwords/
// original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// improved by: Waldo Malqui Silva (http://waldo.malqui.info)
// improved by: Robin
// improved by: Kevin van Zonneveld (http://kvz.io)
// bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)
// bugfixed by: Cetvertacov Alexandr (https://github.com/cetver)
// input by: James (http://www.james-bell.co.uk/)
// example 1: ucwords('kevin van zonneveld')
// returns 1: 'Kevin Van Zonneveld'
// example 2: ucwords('HELLO WORLD')
// returns 2: 'HELLO WORLD'
// example 3: ucwords('у мэри был маленький ягненок и она его очень любила')
// returns 3: 'У Мэри Был Маленький Ягненок И Она Его Очень Любила'
// example 4: ucwords('τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός')
// returns 4: 'Τάχιστη Αλώπηξ Βαφής Ψημένη Γη, Δρασκελίζει Υπέρ Νωθρού Κυνός'
return (str + '').replace(/^(.)|\s+(.)/g, function ($1) {
return $1.toUpperCase();
});
};
Saya akan menggunakan regex untuk tujuan ini:
myString = ' this Is my sTring. ';
myString.trim().toLowerCase().replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
text-transform:capitalize;
.