Saya telah membaca pertanyaan ini untuk mendapatkan karakter pertama dari string. Apakah ada cara untuk mendapatkan n jumlah karakter pertama dari string dalam C #?
133
Saya telah membaca pertanyaan ini untuk mendapatkan karakter pertama dari string. Apakah ada cara untuk mendapatkan n jumlah karakter pertama dari string dalam C #?
char
** s dan Anda bertanya tentang ** karakter s. Mereka bukan hal yang sama.𣊾
dan𣇞
dua karakter yang harus saya gunakan baru kemarin yang gagal dalam perangkat lunak yang ditulis dalam C # saya gunakan karena programmer tidak tahu perbedaan antara achar
dan karakter. Jangan jatuh ke dalam perangkap ini!Jawaban:
Anda dapat menggunakan Enumerable. Ambil seperti:
Atau Anda dapat menggunakan String.Substring .
Ingatlah bahwa
String.Substring
bisa melempar pengecualian jika panjang string kurang dari karakter yang diperlukan.Jika Anda ingin mendapatkan hasil dalam string maka Anda dapat menggunakan:
Menggunakan String Constructor dan LINQ
Take
Nilai tambah dengan pendekatan ini tidak memeriksa panjang sebelum tangan.
String.Substring
pengecekan kesalahanSuka:
sumber
IsNullOrWhiteSpace
salah disini. Pertimbangkan string dengan 10 kosong - kode Anda akan mengembalikan semua 10. GunakanIsNullOrEmpty
saja. (Ini tidak baik untuk digabungkanIsNullOrWhiteSpace
dengan tes lain; Alih-alih tes untuk null + kosong, makaTrim
jika itu adalah perilaku tertentu, maka lakukan tes / operasi apa pun yang diperlukan.)Silakan coba:
Periksa C # Substring , Metode String.Substring
sumber
Anda dapat menggunakan Substring (int startIndex, int length)
Bagaimana jika string sumber kurang dari lima karakter? Anda akan mendapatkan pengecualian dengan menggunakan metode di atas. Kita dapat memberi syarat untuk memeriksa apakah jumlah karakter dalam string lebih dari 5 kemudian mendapatkan lima pertama melalui Substring. Catatan Saya telah menetapkan string sumber ke variabel firstFiveChar. FirstFiveChar tidak berubah jika karakter kurang dari 5, jadi bagian lain tidak diperlukan.
sumber
Tidak ada yang menyebutkan cara melakukan pemeriksaan yang benar saat menggunakan
Substring()
, jadi saya ingin berkontribusi tentang hal itu.Jika Anda tidak ingin menggunakan
Linq
dan menggunakannyaSubstring()
, Anda harus memastikan bahwa string Anda lebih besar dari parameter kedua (panjang)Substring()
fungsi.Katakanlah Anda membutuhkan 5 karakter pertama. Anda harus memeriksanya dengan benar, seperti ini:
Tanpa pemeriksaan ini,
Substring()
fungsi akan mengeluarkan pengecualian karena akan beralih melalui huruf yang tidak ada.Saya pikir Anda mendapatkan ide ...
sumber
Masalahnya
.Substring(,)
adalah, Anda harus yakin bahwa string yang diberikan setidaknya memiliki panjang karakter yang diminta, jika tidakArgumentOutOfRangeException
maka akan dilempar.Solusi 1 (menggunakan 'Substring'):
Kekurangan menggunakan
.Substring(
adalah Anda harus memeriksa panjang string yang diberikan.Solusi 2 (menggunakan 'Ambil'):
Menggunakan 'Take' akan mencegah Anda perlu memeriksa panjang string yang diberikan.
sumber
Gunakan fungsi PadRight untuk mencegah agar string tidak terlalu pendek, ambil apa yang Anda butuhkan lalu pangkas spasi dari ujungnya semua dalam satu pernyataan.
sumber
Saya tidak tahu mengapa ada yang menyebutkan ini. Tapi ini cara terpendek dan paling sederhana untuk mencapai ini.
n
- jumlah karakter yang Anda butuhkanContoh
sumber
Tambahkan lima karakter spasi kemudian potong lima pertama dan pangkas hasilnya. Jumlah spasi yang Anda tambahkan harus sesuai dengan jumlah yang Anda potong. Pastikan untuk menyertakan tanda kurung sebelum
.Substring(0,X)
atau Anda tidak akan menambahkan apa pun.Dengan teknik ini Anda tidak perlu khawatir tentang yang
ArgumentOutOfRangeException
disebutkan dalam jawaban lain.sumber
sumber
Hanya ada beberapa cara baru untuk melakukan ini di C # 8.0: Range operator
Microsoft Documents
Atau seperti saya suka memanggil mereka, Pandas iris.
Cara lama:
Jalan baru:
Yang sekilas tampak seperti tradeoff yang sangat buruk dari beberapa keterbacaan untuk kode pendek tetapi fitur baru memberi Anda
hal-hal keren seperti ini:
var slice1 = daftar [2 .. ^ 3]; // daftar [Range.Create (2, Index.CreateFromEnd (3))]
var slice2 = daftar [.. ^ 3]; // daftar [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = daftar [2 ..]; // daftar [Range.FromStart (2)]
var slice4 = daftar [..]; // daftar [Rentang. Semua]
sumber
Untuk mendapatkan n jumlah karakter pertama dari string dalam C #
sumber
Di bawah ini adalah metode ekstensi yang memeriksa apakah string lebih besar dari yang dibutuhkan dan mempersingkat string ke jumlah maksimum karakter yang ditentukan dan menambahkan '...'.
sumber
Di C # 8.0 Anda bisa mendapatkan lima karakter pertama dari string seperti itu
Berikut ini beberapa informasi lebih lanjut tentang Indeks dan Rentang
sumber
Saya menggunakan:
atau alternatif jika Anda ingin memeriksa Whitespace juga (bukan hanya Null):
sumber
Atau Anda bisa menggunakan String.ToCharArray () .
Dibutuhkan
int startindex
dan danint length
sebagai parameter dan mengembalikan achar[]
Anda masih perlu memastikan bahwa string memiliki panjang yang tepat, jika tidak maka akan melempar a
ArgumentOutOfRangeException
sumber
Silakan coba kode ini ketika str kurang dari 5.
sumber
Jika kita hanya ingin 5 karakter pertama dari bidang apa pun, maka ini dapat dicapai dengan Atribut Kiri
sumber
Coba kode di bawah ini
sumber
Saya sudah mencoba jawaban di atas dan yang terbaik menurut saya adalah yang ini
Dalam hal ini saya bisa mendapatkan huruf pertama dari string
sumber