Dizgideki kelimeleri büyük harfle yazmanın en iyi yolu nedir?
Dizgideki kelimeleri büyük harfle yazmanın en iyi yolu nedir?
Yanıtlar:
/**
* 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"
,. Mind true
parametresi.
Bir dize içindeki sözcükleri büyük harf yapmak için en kısa uygulama, ES6'nın ok işlevlerini kullanarak aşağıdakilerdir:
'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'
ES5 uyumlu uygulama:
'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'
Normal ifade temelde verilen dize içindeki her kelimenin ilk harfiyle eşleşir ve yalnızca bu harfi büyük harfe dönüştürür:
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
Bu normal ifade, belirtilen dize içindeki boşlukla başlayan ilk harf ve boşluk olmayan her harfle eşleşir ve yalnızca bu harfi büyük harfe dönüştürür:
Yakalamayan bir grup burada şu şekilde kullanılabilirdi, /(?:^|\s)\S/g
ancak g
regex'imizdeki bayrak alt grupları tasarım gereği yakalamayacak.
Şerefe!
päijät-häme
olurPäIjäT-HäMe
EisbäRen
örneğin bir sonuçtur.
Päijät-Häme
, ancak en azından Chrome boşlukta tire işareti (-) içermez, bu nedenle adın ikinci kısmı büyük harfle yazılmaz. Olarak sabitlenebilir /(^|\s|-)\S/g
.
function capitalize(s){
return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};
capitalize('this IS THE wOrst string eVeR');
çıktı: "Bu şimdiye kadarki en kötü dize"
Bu çözüm benimkinin yerini alıyor gibi görünüyor: https://stackoverflow.com/a/7592235/104380
Vsync tarafından verilen cevap aksanlı harfleriniz olmadığı sürece işe yarar , giriş dizesinde .
Nedenini bilmiyorum, ama görünüşe göre \b
regexp de aksanlı harf eşleşir (IE8 ve Chrome üzerinde test edilmiştir), bu yüzden gibi bir dize "località"
yanlış büyük harfle"LocalitÀ"
(à
mektup büyük harfle yazılır, çünkü normal ifade bunun bir kelime sınırı olduğunu düşünür)
Aksanlı harflerle de çalışan daha genel bir işlev şudur :
String.prototype.toCapitalize = function()
{
return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); });
}
Bu şekilde kullanabilirsiniz:
alert( "hello località".toCapitalize() );
" javascript".toCapitalize() -> " javascript"
Herkes istediğin JavaScript cevabını verdiğinden, CSS özelliğinin text-transform: capitalize
tam olarak bunu yapacağını söyleyeceğim.
Bunu gerçekleştirmek kudreti bize bunu çalıştıran hangi bağlamda herhangi vermediyseniz - - Neden soruyorsun olmayabilir ama sadece sunum için ise, kesinlikle CSS alternatif gider.
John Resig (jQuery şöhretinden) John Gruber tarafından yazılmış bir perl betiğini JavaScript'e taşıdı. Bu senaryo daha akıllı bir şekilde büyük harf kullanır, örneğin 've' ve 'gibi küçük kelimeleri büyük harfle yazmaz.
Burada bulabilirsiniz: JavaScript'te Başlık Büyük Harf Kullanımı
JavaScript ve html kullanma
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>
Temel olarak, yapabilirsiniz string.capitalize()
ve her kelimenin her 1 harfini büyük yazacaktır.
Kaynak: http://www.mediacollege.com/internet/javascript/text/case-capitalize.html
if (object.capitalize) {...} else {String.prototype.capitalize = function()....}
burada nesne türündedir String
. Yani, gerçekten oldukça basit.
Ivo'nun cevabı iyi, ama eşleşmemeyi tercih ediyorum \w
çünkü 0-9 ve AZ'den büyük harf kullanmanıza gerek yok. Bunları görmezden gelebilir ve sadece az ile eşleşebiliriz.
'your string'.replace(/\b[a-z]/g, match => match.toUpperCase())
// => 'Your String'
Aynı çıktı, ama kendi kendini belgeleme kodu açısından daha net düşünüyorum.
"Är Toaletten"
. Çok iyi cevap verildikten yıllar sonra cevabınız tartışmaya katkıda bulunmuyor ..
/\b\w/g
İngilizce olmayan mektuplar için de başarısız olur. Herkes unicode karakterlerle uğraşmaz ve bu yapmak istemeyenlere yardımcı olur.
console.log( _.capitalize('ÿöur striñg') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Kısa bir ES6 yapmanın yolu böyle görünebilir.
const capitalizeFirstLetter = s => s.charAt(0).toUpperCase() + s.slice(1)
Bu sadece ilk harfin üstünü kaplar ve cümlenin geri kalanını etkilemez.
Çözümüm:
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(' ');
};
Misal:
'álL riGht'.toCapital();
// Returns 'Áll Right'
'a áAA. bb . bbb .cc .d'.toCapital();
=>a Áaa. bb . Bbb .cc .d
Bu, en temel kullanım durumlarını kapsamalıdır.
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
Düzenleme: Geliştirilmiş haritalama okunabilirliği.
/\b\w/g
...
Bu çözüm dozu normal ifade kullanmaz, aksanlı karakterleri destekler ve hemen hemen her tarayıcı tarafından desteklenir.
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;
}
}
Kullanımı:
console.log (capitalizeIt ('çao 2. Javascript programının içinde'));
Çıktı:
Çao 2. Inside Javascript Programı
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html buradaki birçok yanıttan biridir.
Google, bu tür sorunlar için ihtiyacınız olan her şey olabilir.
Saf bir yaklaşım, dizeyi boşlukla ayırmak, elde edilen dizinin her elemanının ilk harfini büyük yapmak ve tekrar birleştirmek olacaktır. Bu, mevcut büyük harf kullanımını tek başına bırakır (örneğin, HTML HTML'de kalır ve Html gibi aptalca bir şey haline gelmez). Bu etkiyi istemiyorsanız, bölmeden önce dizenin tamamını küçük harfe çevirin.
Bu kod noktadan sonra kelimeleri büyük harfe çevirir:
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;
}
Kolay süreçle gitmeyi seviyorum. Önce kolay yineleme için dizeyi Dizi olarak değiştirin, ardından harita işlevini kullanarak her sözcüğü istediğiniz gibi değiştirin.
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 veya Javascipt, bunu başarmak için yerleşik bir yöntem sağlamaz.
CSS test dönüşümü (text-transform: capitalize;), dizenin verilerini büyük harfle yazmaz, ekranda büyük harfli bir oluşturma gösterir.
Düz vanillaJS kullanarak bunu veri düzeyinde elde etmenin daha yasal bir yolunu arıyorsanız, bu çözümü kullanın =>
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);
}
}
Bunu kullan:
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>
Bir dizedeki kelimeleri büyük harf yapmak için aşağıdakileri kullanabilirsiniz:
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;
}
Ayrıca locutus var: https://locutus.io/php/strings/ucwords/ ki bu şekilde tanımlayan:
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();
});
};
Bu amaçla regex kullanırdım:
myString = ' this Is my sTring. ';
myString.trim().toLowerCase().replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
text-transform:capitalize;
.