Saya memiliki string yang berisi kata-kata dalam campuran karakter huruf besar dan kecil.
Sebagai contoh: string myData = "a Simple string";
Saya perlu mengubah karakter pertama dari setiap kata (dipisahkan oleh spasi) menjadi huruf besar. Jadi saya ingin hasilnya sebagai:string myData ="A Simple String";
Apakah ada cara mudah untuk melakukan ini? Saya tidak ingin membagi string dan melakukan konversi (itu akan menjadi pilihan terakhir saya). Juga, dijamin bahwa senarnya dalam bahasa Inggris.
Jawaban:
MSDN: TextInfo.ToTitleCase
Pastikan Anda memasukkan:
using System.Globalization
sumber
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, tetapi jauh dari sempurna. Misalnya, masih tidak menangani tanda kutip atau tanda kurung -"(one two three)"
->"(one Two Three)"
. Anda mungkin ingin mengajukan pertanyaan baru setelah Anda tahu persis apa yang ingin Anda lakukan dengan kasus-kasus ini.Coba ini:
Seperti yang telah ditunjukkan, menggunakan TextInfo.ToTitleCase mungkin tidak memberikan hasil yang Anda inginkan. Jika Anda perlu lebih banyak kontrol atas output, Anda dapat melakukan sesuatu seperti ini:
Dan kemudian gunakan seperti ini:
sumber
Namun variasi lain. Berdasarkan beberapa tips di sini, saya telah menguranginya menjadi metode ekstensi ini, yang bekerja sangat baik untuk tujuan saya:
sumber
Secara pribadi saya mencoba
TextInfo.ToTitleCase
metode ini, tetapi, saya tidak mengerti mengapa itu tidak berhasil ketika semua karakter ditulis dengan huruf besar.Meskipun saya menyukai fungsi util yang disediakan oleh Winston Smith , izinkan saya menyediakan fungsi yang saya gunakan saat ini:
Bermain dengan beberapa senar tes :
Memberikan hasil :
sumber
ToLower()
seluruh string, Anda lebih suka melakukan semua itu sendiri dan memanggil fungsi yang sama pada setiap karakter individu? Tidak hanya itu solusi yang jelek, itu memberikan manfaat nol, dan bahkan akan memakan waktu lebih lama dari fungsi bawaan.rest = words[i].Substring(1).ToLower();
Baru-baru ini saya menemukan solusi yang lebih baik.
Jika teks Anda berisi setiap huruf dalam huruf besar, maka TextInfo tidak akan mengonversinya menjadi huruf besar. Kita dapat memperbaikinya dengan menggunakan fungsi huruf kecil di dalam seperti ini:
Sekarang ini akan mengonversi semua yang masuk ke dalam Propercase.
sumber
sumber
Jika seseorang tertarik dengan solusi untuk Compact Framework:
sumber
Inilah solusi untuk masalah itu ...
sumber
Gunakan
ToLower()
dulu, daripadaCultureInfo.CurrentCulture.TextInfo.ToTitleCase
pada hasil untuk mendapatkan output yang benar.sumber
Saya membutuhkan cara untuk menangani semua kata-kata penutup, dan saya menyukai solusi Ricky AH, tetapi saya mengambil langkah lebih jauh untuk mengimplementasikannya sebagai metode ekstensi. Ini menghindari langkah harus membuat array karakter Anda kemudian memanggil ToArray di atasnya secara eksplisit setiap waktu - jadi Anda bisa menyebutnya pada string, seperti:
pemakaian:
kode:
sumber
Lebih baik dipahami dengan mencoba kode Anda sendiri ...
Baca lebih lajut
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Ubah String menjadi Huruf Besar
2) Ubah String menjadi Huruf Kecil
3) Konversi String ke TitleCase
sumber
Berikut ini adalah implementasi, karakter demi karakter. Harus bekerja dengan "(Satu Dua Tiga)"
sumber
sumber
Anda dapat langsung mengubah teks atau string menjadi layak menggunakan metode sederhana ini, setelah memeriksa nilai string nol atau kosong untuk menghilangkan kesalahan:
sumber
Coba ini:
Panggil metode ini dalam acara TextChanged dari TextBox.
sumber
Saya menggunakan referensi di atas dan solusi lengkapnya adalah: -
// Butuh hasil seperti "Infoa2z Berarti Semua Informasi"
// Kita perlu mengonversi string dalam huruf kecil juga, jika tidak, string itu tidak berfungsi dengan baik.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
sumber
Inilah yang saya gunakan dan berfungsi untuk sebagian besar kasus kecuali jika pengguna memutuskan untuk menimpanya dengan menekan shift atau caps lock. Seperti pada keyboard Android dan iOS.
sumber
Untuk mereka yang ingin melakukannya secara otomatis pada penekanan tombol, saya melakukannya dengan mengikuti kode di vb.net pada textboxcontrol khusus - Anda juga dapat melakukannya dengan kotak teks biasa - tapi saya suka kemungkinan untuk menambahkan kode berulang untuk kontrol tertentu melalui kontrol kustom yang sesuai dengan konsep OOP.
sumber
Bekerja dengan baik bahkan dengan kasing unta: 'someText di YourPage'
sumber
Sebagai metode ekstensi:
Pemakaian:
Hasil:
Kebab Is Deliciou's ;d C...
sumber
Alternatif dengan referensi ke
Microsoft.VisualBasic
(menangani string huruf besar juga):sumber
Tanpa menggunakan
TextInfo
:Itu loop melalui setiap huruf di setiap kata, mengubahnya menjadi huruf besar jika itu huruf pertama sebaliknya mengubahnya menjadi huruf kecil.
sumber
Saya tahu ini pertanyaan lama tapi saya sedang mencari hal yang sama untuk C dan saya mengetahuinya jadi saya pikir saya akan mempostingnya jika orang lain mencari cara di C:
sumber