Saya memiliki serangkaian teks (sekitar 5-6 kata kebanyakan) yang perlu saya ubah.
Saat ini teksnya terlihat seperti:
THIS IS MY TEXT RIGHT NOW
Saya ingin mengubahnya menjadi:
This Is My Text Right Now
Saya dapat mengulang melalui koleksi string saya, tetapi tidak yakin bagaimana cara melakukan modifikasi teks ini.
Saya mungkin lebih suka memanggil ToTitleCase dari CultureInfo ( System.Globalization ) daripada Thread.CurrentThread ( System.Threading )
tetapi harus sama dengan solusi jspcal
EDIT
Sebenarnya solusi tersebut tidak sama :
CurrentThread
--calls ->CultureInfo
!System.Threading.Thread.CurrentThread.CurrentCulture
System.Globalization.CultureInfo.CurrentCulture
Referensi:
sumber
Ada beberapa cara untuk mengubah karakter pertama dari string menjadi huruf besar.
Cara pertama adalah membuat metode yang hanya menutup karakter pertama dan menambahkan sisa string menggunakan substring:
Cara kedua (yang sedikit lebih cepat) adalah membagi string menjadi array karakter dan kemudian membangun kembali string tersebut:
sumber
Belum teruji tetapi sesuatu seperti ini seharusnya berfungsi:
Pada dasarnya ini mengatakan "membentuk sebelumnya pencocokan ekspresi reguler pada semua kemunculan karakter alfanumerik yang mengikuti karakter alfanumerik lain dan kemudian menggantinya dengan versi huruf kecil itu sendiri"
sumber
Jika Anda menggunakan di halaman web, Anda juga dapat menggunakan CSS:
style="text-transform:capitalize;"
sumber
ASP.NET
menunjukkan OP sedang melakukannya di WEB. Tentu ini bukan jawaban dari pertanyaan karena OP membutuhkan solusi yang masukC#
tetapi menyelesaikan masalah dan dapat menjadi solusi alternatif. +1Saat membuat tabel besar, kecepatan menjadi perhatian, jadi fungsi kedua Jamie Dixon adalah yang terbaik, tetapi tidak sepenuhnya berfungsi sebagaimana mestinya ...
Itu gagal untuk mengambil semua huruf menjadi huruf kecil, dan itu hanya mengkapitalisasi huruf pertama dari string, bukan huruf pertama dari setiap kata dalam string ... opsi di bawah ini memperbaiki kedua masalah:
Meskipun pada titik ini, apakah ini masih pilihan tercepat masih belum pasti,
Regex
solusi yang diberikan oleh George Mauer mungkin lebih cepat ... seseorang yang cukup peduli harus mengujinya.sumber
Saya tidak tahu apakah solusi di bawah ini lebih atau kurang efisien daripada jawaban jspcal, tapi saya cukup yakin itu membutuhkan lebih sedikit pembuatan objek daripada Jamie dan George.
sumber
Selain jawaban pertama, ingatlah untuk mengubah indeks string selectionstart ke akhir kata atau Anda akan mendapatkan urutan huruf terbalik dalam string tersebut.
sumber
Coba teknik ini; Ini mengembalikan hasil yang diinginkan
Dan jangan lupa gunakan
System.Globalization
.sumber
Salah satu solusi yang mungkin Anda minati. Melintasi array karakter dari kanan ke kiri dan sebaliknya dalam satu loop.
sumber
jawaban jspcal sebagai ekstensi string.
Program.cs
StringExtensions.cs
sumber