it-swarm-id.com

Bagaimana saya bisa menggunakan huruf besar setiap kata dalam string di Perl?

Apa cara termudah untuk menggunakan huruf kapital pada huruf pertama di setiap kata string?

25
Dan Littlejohn

Lihat faq .

Saya tidak percaya ucfirst () memenuhi pertanyaan OP untuk menggunakan huruf besar setiap kata dalam sebuah string tanpa membelah string dan bergabung nanti.

16
piCookie

Karena @brian menyebutkan dalam komentar, jawaban yang saat ini diterima oleh @piCookie salah!

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

Ini akan mencetak "Apa Jawaban yang Salah?" perhatikan huruf S dengan huruf kapital salah 

Sebagai FAQ mengatakan Anda mungkin lebih baik menggunakan 

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

atau Teks :: Autoformat

45
Pat

Lihatlah fungsi ucfirst .

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

Dengan menangkap spasi putih, itu dimasukkan dalam daftar dan digunakan untuk membangun kembali spasi asli. "ucfirst lc" menggunakan huruf kapital "teXT" menjadi "Text".

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

harus bekerja dengan baik

6
moritz

Ini hanya menggunakan huruf kapital kata pertama dari setiap baris:

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

Perhatikan bahwa solusi FAQ tidak berfungsi jika Anda memiliki kata-kata dalam huruf kapital semua dan Anda ingin huruf besar (hanya) dikapitalisasi. Anda dapat membuat regex yang lebih rumit, atau hanya melakukan lc pada string sebelum menerapkan solusi FAQ.

1
Karen in Wichita

Anda dapat menggunakan ' Judul Kasus ', ini adalah kode yang sangat keren yang ditulis dalam Perl.

1
vsync

Fungsi ucfirst di peta tentu saja melakukan hal ini, tetapi hanya dengan cara yang sangat sederhana. Jika Anda ingin sesuatu yang sedikit lebih canggih, lihat script TitleCase John Gruber .

0
RET

coba ini : 

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

Apa Jawaban yang Salah?

0
bill god