it-swarm-tr.com

Her kelimenin ilk harfini Perl'deki bir dizgede nasıl büyük harf yapabilirim?

Bir dizgenin her bir Word'ündeki ilk harfi büyük harf yapmanın en kolay yolu nedir?

25
Dan Littlejohn

Bakınız sss .

Ucfirst () 'nin OP'nin, her bir kelimenin ilk harfini bir dizgede dizeyi bölmeden ve daha sonra birleştirmeden büyük harf yapması yönündeki sorusunu yerine getirdiğine inanmıyorum.

16
piCookie

@ Brian @ yorumlarda bahsettiği gibi şu anda @piCookie tarafından kabul edilen cevap yanlıştır!

$_="what's the wrong answer?";
s/\b(\w)/\U$1/g
print; 

Bu "Yanlış Cevap Nedir?" Yazacaktır. yanlış yazılmış büyük S dikkat edin 

FAQ dediği gibi muhtemelen kullanımdan daha iyi olduğunuzu söylüyor 

s/([\w']+)/\u\L$1/g

veya Metin :: Otomatik Biçim

45
Pat

ucfirst işlevine bir göz atın.

$line = join " ", map {ucfirst} split " ", $line;
10
zigdon
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

Beyaz boşluk yakalanarak, listeye eklenir ve orijinal aralığın yeniden oluşturulması için kullanılır. "ucfirst lc", "teXT" yi "Metin" olarak büyük harf yapar.

9
kixx
$string =~ s/(\w+)/\u$1/g;

iyi çalışması gerekir

6
moritz

Bu, her satırın yalnızca ilk Word'ünü büyük harf yapar:

Perl -ne "print (ucfirst($1)$2)  if s/^(\w)(.*)/\1\2/" file
2
alemol

Bütünüyle büyük harfli kelimeleriniz varsa ve onların yerine (yalnızca) büyük harf kullanılmasını istiyorsanız, FAQ çözümünün işe yaramadığını unutmayın. Daha karmaşık bir regex yapabilir veya FAQ çözümünü uygulamadan önce dizgede bir lc yapabilirsiniz.

1
Karen in Wichita

Perl ile yazılmış çok güzel bir kod parçası olan ' Title Case ' kullanabilirsiniz.

1
vsync

Bir haritadaki ucfirst işlevi kesinlikle bunu yapar, ancak yalnızca ilkel bir şekilde. Daha karmaşık bir şey istiyorsanız, John Gruber'in TitleCase senaryosuna bakın.

0
RET

bunu dene : 

echo "what's the wrong answer?" |Perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'

Yanlış Cevap Nedir?

0
bill god