Değişkenin ilk harfi büyük


Yanıtlar:


228

Bir kelimeye büyük harfle başlayan küçük harfleri değiştirmek için .replace[MDN] işlevini kullanın.

var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"


Düzenleme: Az dışında kelime karakterleriyle uğraşıyorsanız, aşağıdaki (daha karmaşık) normal ifade amaçlarınıza daha uygun olabilir.

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 Αλφα"


1
Bu gibi isimlerle çalışmaz Björn Lüchinger, bu olur BjöRn LüChinger. Bunun için herhangi bir düzeltme var mı?
2014

2
@Dediqated Bunu belirttiğiniz için teşekkürler, düzenlemenin yardımcı olup olmadığını bana bildirin.
Peter Olson

Harika çalışıyor! Dizenin ilk karakterini büyük harfe dönüştürmek istersem, değişikliğin ne olması gerektiğine dair herhangi bir ipucu var mı? (her bir kelime yerine)
Andres SK

6
@andufo Elbette, bunu yapması çok daha kolay. Sadece kullanınstr[0].toUpperCase() + str.slice(1)
Peter Olson

@PeterOlson cevap için teşekkürler! 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);Özel karakterleri de kapsamak için kullanmayı bıraktım .
Andres SK

73

Çok daha kolay yol:

$('#test').css('textTransform', 'capitalize');

@Dementic'e beni doğru yola yönlendirdiği için biraz kredi vermeliyim. Önerdiğiniz her şeyden çok daha basit.


32
Bu, yalnızca dizenin görsel temsilini değiştirir, dize değerinin kendisini değiştirmez.
toxaq

1
Bunu DB'den getirilen değişkenlere uygulayamazsınız, ancak diğer örnekler için bu yöntem çok temiz
Armand

3
Not: text-transform:capitalizeTÜM BÜYÜK HARFLERİ etkilemeyecektir.
Bob Stein

1
Ya dize (değişken), sadece görüntüleme dışında bir işlem için kullanılması gerekiyorsa?
Fr0zenFyr

girdiyi büyük harfle kaydedeceğine dikkat edin, yalnızca görünümde dönüştürür
Sherif Elkassaby

25

http://phpjs.org/functions/ucwords:569 iyi bir örnek var

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(kısalık için kaynaktan çıkarılmış işlev yorumu. Ayrıntılar için lütfen bağlantılı kaynağa bakın)

DÜZENLEME: Lütfen bu işlevin (sorunuzun sorduğu gibi) her bir kelimenin ilk harfini büyük harf olarak kullandığını ve bir dizenin yalnızca ilk harfini (soru başlığınızın sorduğu gibi) büyük harfle yazdığını unutmayın.


Bu, kesme işaretinden sonra cümledeki kelimelerin büyük harfle
yazıldığı

Orijinal dizenizde alt çizgi varsa çalışmaz, daha iyi performans için lütfen onu REGEX'inize ekleyin. TY
Ruslan Abuzant

1
@RuslanAbuzant Bu farklı bir soruyu yanıtlıyor olabilir. Bir alt çizgiyi kelime ayırıcı (veya genel boşluk) olarak yorumlamak iyidir, ancak OP'nin istediği şey değildir ... ve hatta kullanım durumunu bozabilir.
Jonathan Fingland

1
ucwords () berbat. Unicode ile çalışmaz (özellikle Kiril, Yunan ve diğer Orta Avrupa alfabeleriyle). Arka uçta daha iyi mb_convert_case () kullanın, örneğin: mb_convert_case ($ _ POST ['ad'], MB_CASE_TITLE, 'utf-8');
Aleksey Kuznetsov

15

sadece saf bir javascript çözümü eklemek istedim (JQuery yok)

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'));


1
teşekkürler kardeşim, sadece bir şeyi düzeltmek istiyorum. bu c < str.length;olmalıchr < str.length;
Leysam Rosario

13

İlk karakteri çıkarmak, büyük harfle yazmak için substring () ve toUpperCase () kullanabileceğinizi ve ardından dizenizin ilk karakterini sonuçla değiştirebileceğinizi hayal ediyorum.

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"

Bunun senin için çalışacağını düşünüyorum. Dikkate alınması gereken bir diğer husus da, eğer bu veriler görüntüleniyorsa, kabına "text-transform: capitalize" CSS özelliğine sahip bir sınıf ekleyebileceğinizdir.


firstChar = firstChar.toUpperCase () gibi olmamalıdır; ? Kodu Node.js'de denedim ve bunu yapmak zorunda kaldım yoksa hiçbir şey değişmedi!
Adrian Adaine

9

Bunu yapmak için, kullanacaksanız gerçekten Javascript'e ihtiyacınız yok

$('#test').css('textTransform', 'capitalize');

Bunu neden css gibi yapmıyorsun

#test,h1,h2,h3 { text-transform: capitalize; }

ya da sınıf olarak yapın ve bu sınıfı ihtiyacınız olan her yere uygulayın

.ucwords { text-transform: capitalize; }

4
Stackoverflow'a hoş geldiniz. Cevabınız bir alternatif öneriyor (bu bazı kullanım durumlarında tamamen geçerli olabilir), ancak soruyu gerçekten cevaplamıyor. Soruyu anladığım kadarıyla, yazar Javascript değişkenini dönüştürmek istedi, sadece görsel temsili değil.
helmbert

3
Evet, ama bu soruya gelen diğer insanlar, benim gibi javascript VEYA css yanıtlarını kabul edebilir ve bu gerçekten yardımcı oldu ...
Brian Powell

6

Hiç duydun substr()mu?

Başlangıç ​​için:

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));


[Güncelleme:]

Bahşiş için @FelixKling'e teşekkürler :

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});

4
text() Dört kez çağırmak yerine, bir işlevi text()$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
iletin

1
burada eski birlikleri kazmak, ancak içeriğin bir öğeye girdiği biliniyorsa, kullanımı çok daha kolay olurdu:$('#test').style.textTransform='capitalize';
Rafael Herscovici

Kapat, @ Demans, ama şöyle olmalı: $('#test').css('textTransform', 'capitalize'); BTW, buradaki en iyi cevap bu. Bunu bir cevap olarak sunacağım.
vbullinger

@vbullinger - kodumu cehennem kadar sarhoş olarak yazdığımda yargılama :) ve js'yi seviyorum, jq'yi değil, bu yüzden kodum yanlış, ama çok fazla değildocument.getElementById('test').style.textTransform='capitalize';
Rafael Herscovici

5

@ Peter-olson'ın cevabına dayanarak, jQuery olmadan daha nesne odaklı bir yaklaşım benimsedim:

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"

Örnek: http://jsfiddle.net/LzaYH/1/


Bence bu gerçekten en doğru yol. Bunu toUpperCaseWordsjavascript toUpperCase()vetoLowerCase()
AB Carroll

5

En basit yol

let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());

kullanıcı tanımlı işlev:

function capitalize(str){
 return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
}

çıktı: Hiren Raiyani

Kodu kullanıcı tanımlı işleviniz olarak veya doğrudan kullanın


4
var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() + 
mystring.substring(1,mystring.length)

console.log(mystring) //gives you Hello World

3
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

3

Bu basit kodu PHP'deki ucwords özellikleriyle deneyebilirsiniz.

function ucWords(text) {
    return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');

Büyük Harfleri değiştirmeden tutacaktır.


3

Aşağıdakiler kadar basit:

string = 'test';
newString = string[0].toUpperCase() + string.slice(1);
alert(newString);

2

Tamamen @Dementric'in cevabına dayanan bu çözüm, basit bir jQuery yöntemi olan 'ucwords' ile aramaya hazır ... Burada katkıda bulunan herkese teşekkürler !!!

$.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
}

});

ÖRNEK: Bu, yöntem kullanılarak çağrılabilir

var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"

2

text-transform: capitalize;Bu iş için kullanabilirsiniz -

HTML -

<input type="text" style="text-transform: capitalize;" />

JQuery -

$(document).ready(function (){
   var asdf = "WERTY UIOP";
   $('input').val(asdf.toLowerCase());
});

Bunu dene

Not: Yalnızca dizenin görsel temsilini değiştirir. Bu dizeyi uyarırsanız, her zaman dizenin orijinal değerini gösterir.


0

İlk harfin büyük harfle yazılmasından önce küçültülecek dize.

(Her ikisi de Jquery sözdizimini kullanır)

function CapitaliseFirstLetter(elementId) {
    var txt = $("#" + elementId).val().toLowerCase();
    $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
    return $1.toUpperCase(); }));
    }

Ek olarak, BÜTÜN dizesini Büyük Harf haline getirmek için bir işlev:

function CapitaliseAllText(elementId) {
     var txt = $("#" + elementId).val();
     $("#" + elementId).val(txt.toUpperCase());
     }

Bir metin kutusunun tıklama etkinliğinde kullanılacak sözdizimi:

onClick="CapitaliseFirstLetter('TextId'); return false"

0

Bu kodu kullandım -

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);

0

Html:

<input class="capitalize" name="Address" type="text" value="" />

JQuery ile Javascript:

$(".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();
        }))
    });

0

JQuery olmadan

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

0

 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);


0

Rusça Засс-Ранцев gibi çift soyadlara ve Honoré de Balzac, d'Artagnan, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd gibi bazı soylu isimlere ek olarak saygı duyan unicode güvenli ucwords () işlevi:

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();
    });
}

0

JS'de ilk harfi büyük yazmanın en kolay yolu

var string = "made in india";

string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return  letter.toUpperCase();});

alert(string );

Sonuç: "Hindistan Malı"


0
var country= $('#country').val();

var con=country[0].toUpperCase();

ctr= country.replace(country[0], con);
   

herhangi bir işlev oluşturmaya gerek yok sadece jugaaar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.