Apakah ada fungsi yang dibangun ke dalam Java yang mengkapitalisasi karakter pertama dari setiap kata dalam sebuah String, dan tidak memengaruhi yang lain?
Contoh:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B tetap modal, ini mengesampingkan Judul Kasus)old mcdonald
->Old Mcdonald
*
* ( Old McDonald
akan ditemukan juga, tapi saya tidak berharap itu pintar ITU.)
Pandangan cepat pada Java String Documentation hanya mengungkapkan toUpperCase()
dan toLowerCase()
, yang tentu saja tidak memberikan perilaku yang diinginkan. Secara alami, hasil Google didominasi oleh dua fungsi tersebut. Sepertinya roda yang pasti sudah ditemukan, jadi tidak ada salahnya untuk bertanya sehingga aku bisa menggunakannya di masa depan.
old mcdonald
? Haruskah itu terjadiOld McDonald
?Jawaban:
WordUtils.capitalize(str)
(dari teks-apache commons )(Catatan: jika Anda ingin
"fOO BAr"
menjadi"Foo Bar"
, gunakancapitalizeFully(..)
saja)sumber
WordUtils.capitalizeFully(str)
solusinya.Jika Anda hanya khawatir tentang huruf pertama dari kata pertama yang ditulis dengan huruf besar:
sumber
line
menjadi nol atau memiliki panjang <2.Metode berikut mengubah semua huruf menjadi huruf besar / kecil, tergantung pada posisinya dekat spasi atau karakter khusus lainnya.
sumber
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
menjadipreviousCharIsLetter
.Coba cara yang sangat sederhana ini
contoh givenString = "ram adalah anak baik"
Outputnya adalah: Ram Is Good Boy
sumber
Saya telah menulis Kelas kecil untuk memanfaatkan semua kata dalam sebuah String.
Opsional
multiple delimiters
, masing-masing dengan perilakunya (bermodalkan sebelum, setelah, atau keduanya, untuk menangani kasus sepertiO'Brian
);Opsional
Locale
;Jangan putus dengan
Surrogate Pairs
.LIVE DEMO
Keluaran:
Catatan: huruf pertama akan selalu menggunakan huruf besar (edit sumber jika Anda tidak menginginkannya).
Silakan bagikan komentar Anda dan bantu saya menemukan bug atau untuk memperbaiki kode ...
Kode:
sumber
sumber
Saya membuat solusi di Java 8 yang IMHO lebih mudah dibaca.
Inti untuk solusi ini dapat ditemukan di sini: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
sumber
Menggunakannya
org.apache.commons.lang.StringUtils
membuatnya sangat sederhana.sumber
StringUtils.capitalise(str)
sudah ditinggalkan. Lihat: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…Dengan kode sederhana ini :
Hasil: Halo
sumber
Saya menggunakan fungsi berikut. Saya pikir ini lebih cepat dalam kinerja.
sumber
Dari Java 9+
Anda dapat menggunakan
String::replaceAll
seperti ini:Contoh:
Keluaran
sumber
Gunakan metode Split untuk membagi string Anda menjadi kata-kata, lalu gunakan fungsi string bawaan untuk mengubah setiap kata menjadi kapital, lalu menambahkannya bersama-sama.
Kode semu (ish)
Pada akhirnya string terlihat seperti "Kalimat yang Kamu Ingin Terapkan Caps To"
sumber
Ini mungkin berguna jika Anda perlu menggunakan huruf besar judul. Ini mengkapitalisasi setiap substring yang dibatasi oleh
" "
, kecuali untuk string tertentu seperti"a"
atau"the"
. Saya belum menjalankannya karena sudah terlambat, harusnya baik-baik saja. Menggunakan Apache CommonsStringUtils.join()
pada satu titik. Anda dapat menggantinya dengan loop sederhana jika diinginkan.sumber
sumber
sumber
Saya memutuskan untuk menambahkan satu lagi solusi untuk memanfaatkan kata dalam string:
Fungsi:
Contoh panggilan:
Hasil:
sumber
Menggunakan:
sumber
Ada banyak cara untuk mengonversi huruf pertama dari kata pertama menjadi huruf besar. Saya punya ide. Ini sangat sederhana:
sumber
sumber
Ini adalah fungsi sederhana
sumber
Ini hanyalah cara lain untuk melakukannya:
sumber
Metode yang dapat digunakan kembali untuk intiCap:
sumber
Ini solusinya.
Saya menemukan masalah ini malam ini dan memutuskan untuk mencarinya. Saya menemukan jawaban oleh Neelam Singh yang hampir sampai, jadi saya memutuskan untuk memperbaiki masalah (putus dengan tali kosong) dan menyebabkan sistem crash.
Metode yang Anda cari disebutkan di
capString(String s)
bawah ini. Ternyata "Ini baru jam 5 pagi di sini" menjadi "Ini Hanya jam 5 pagi Di Sini".Kode ini cukup baik dikomentari, jadi selamat menikmati.
sumber
1. Java 8 Streaming
Contoh:
Untuk
foo bAR
keFoo Bar
, gantimap()
metode dengan yang berikut:2.
String.replaceAll()
(Java 9+)Contoh:
3. Teks Apache Commons
Untuk titlecase:
Untuk detailnya, cek tutorial ini .
sumber
Bagi Anda yang menggunakan Velocity di MVC Anda, Anda bisa menggunakan
capitalizeFirstLetter()
metode dari kelas StringUtils .sumber
sumber
sumber
Jika Anda lebih suka Jambu ...
sumber
sumber
Cara singkat dan tepat adalah sebagai berikut:
Ini berfungsi tanpa kesalahan jika Anda mencoba dan mengubah nilai nama menjadi tiga nilai. Kesalahan gratis.
sumber