Apakah ada alasan untuk ini? Saya bertanya karena jika Anda perlu menggunakan banyak karakter kosong maka Anda masuk ke situasi yang sama seperti ketika Anda menggunakan banyak string kosong.
Sunting: Alasan penggunaan ini adalah ini:
myString.Replace ('c', '')
Jadi hapus semua contoh 'c's dari myString.
RemoveAll(this string s, params char[] toRemove)
? Maksudnya akan dikomunikasikan dengan jelas dan Anda tidak akan mengambil risiko salah ketik.""
membuat objek : Tidak, tidak.Jawaban:
Tidak ada yang namanya char kosong. Yang paling dekat Anda dapatkan adalah
'\0'
, karakter Unicode "null". Mengingat bahwa Anda dapat menanamkan itu dalam string literal atau mengekspresikannya sendiri dengan sangat mudah, mengapa Anda ingin bidang yang terpisah untuknya? Sama-sama, argumen " mudah membingungkan""
dan" "
" tidak berlaku'\0'
.Jika Anda bisa memberikan contoh di mana Anda ingin menggunakannya dan mengapa Anda pikir itu akan lebih baik, itu mungkin membantu ...
sumber
Int32.Zero
, apakah Anda akan menggunakannya sebagai ganti dari 0 literal? Jika tidak, apa bedanya di sini?A char, tidak seperti string, adalah hal yang diskrit dengan ukuran tetap. Sebuah string benar-benar sebuah wadah karakter.
Jadi, Char.Empty tidak benar-benar masuk akal dalam konteks itu. Jika Anda memiliki char, itu tidak kosong.
sumber
Tidak ada yang namanya karakter kosong. Itu selalu mengandung sesuatu . Bahkan '\ 0' adalah karakter.
sumber
Gunakan
Char.MinValue
yang berfungsi sama dengan '\ 0'. Tapi hati-hati itu tidak sama denganString.Empty
.sumber
Anda dapat menggunakan karakter yang dapat dibatalkan .
sumber
Jika Anda tidak membutuhkan seluruh string, Anda dapat memanfaatkan eksekusi yang tertunda:
Anda bahkan dapat menggabungkan beberapa karakter ...
... dan hanya 7 karakter pertama yang akan dievaluasi :)
Sunting: atau, lebih baik lagi:
dan penggunaannya:
sumber
OK, ini tidak terlalu elegan untuk menghapus huruf, karena metode .Replace memiliki kelebihan yang mengambil parameter string. Tapi ini berfungsi untuk menghapus carriage return, feed garis, tab, dll. Contoh ini menghilangkan karakter tab:
sumber
alasan yang sama tidak ada
int.Empty
. Wadah bisa kosong. Nilai skalar tidak bisa. Jika Anda berarti 0 (yang tidak kosong), maka gunakan'\0'
. Jika maksud Andanull
, maka gunakannull
:)sumber
Char adalah tipe nilai, jadi nilainya tidak boleh nol. (Kecuali jika dibungkus dalam wadah Nullable).
Karena tidak boleh nol, dalam berisi beberapa kode numerik dan setiap kode dipetakan ke beberapa karakter.
sumber
Bukan jawaban untuk pertanyaan Anda, tetapi untuk menunjukkan default,
char
Anda hanya dapat menggunakannyayang sama dengan
char.MinValue
yang pada gilirannya sama dengan\0
. Seseorang seharusnya tidak menggunakan jika untuk sesuatu seperti string kosong.sumber
Tidak menjawab pertanyaan pertama Anda - tetapi untuk masalah spesifik yang Anda miliki, Anda bisa menggunakan string bukan karakter, kan ?:
Ada alasan mengapa Anda tidak ingin melakukan itu?
sumber
Anda juga dapat membangun kembali karakter string Anda dengan karakter, tidak termasuk karakter yang ingin Anda singkirkan.
Inilah metode ekstensi untuk melakukan ini:
Itu tidak licin atau mewah, tetapi bekerja dengan baik.
Gunakan seperti ini:
sumber
StringBuilder
untukresult
. Kenapa tidak dibungkusreturn s.Replace(charsToRemove,"");
?Jika Anda ingin menghapus karakter yang memenuhi kondisi tertentu, Anda dapat menggunakan ini:
(Ini hanya akan meninggalkan karakter huruf besar dalam string.)
Dengan kata lain, Anda dapat "menggunakan" string sebagai
IEnumerable<char>
, membuat perubahan padanya dan kemudian mengubahnya kembali ke string seperti yang ditunjukkan di atas.Sekali lagi, ini memungkinkan untuk tidak hanya menghapus char tertentu karena ekspresi lambda, meskipun Anda dapat melakukannya jika Anda mengubah ekspresi lambda seperti ini:
c => c != 't'
.sumber
Bagaimana dengan BOM , karakter ajaib yang ditambahkan Microsoft untuk memulai file (setidaknya XML)?
sumber
myString.Replace ('c', '')
bisa diraih olehmyString.Replace ('c', UTF_BOM)
. Maka saya akan mengatakan jawabannya adalah "bagaimana tidak tentang ...".jika Anda ingin menghapus char kosong di string berikut ini akan bekerja, cukup konversikan ke representasi tipe data yang Anda inginkan. Terima kasih,
sumber
Dalam hal bahasa C #, yang berikut ini mungkin tidak masuk akal. Dan ini bukan jawaban langsung untuk pertanyaan itu. Tetapi unggas adalah apa yang saya lakukan dalam salah satu skenario bisnis saya
The
null
danwhite space
bisnis memiliki berbagai mengalir dalam proyek saya. Saat memasukkan ke dalam basis data, saya harus memasukkanempty string
ke basis data jika itu adalah ruang putih.sumber
Saya tahu ini cukup lama, tetapi saya mengalami masalah baru-baru ini karena harus melakukan beberapa penggantian untuk membuat nama file aman. Pertama, dalam fungsi .NET string.Replace null terbaru adalah setara dengan karakter kosong. Karena itu, apa yang hilang dari .Net adalah penggantian sederhana semua yang akan mengganti karakter apa pun dalam array dengan karakter yang diinginkan. Silakan merujuk kode di bawah ini (berjalan di LinqPad untuk pengujian).
sumber
menggunakan
sumber
Cara termudah untuk menghapus karakter dari string adalah dengan Trim
cl = cl.Trim(' ');
Menghapus semua spasi dalam sebuah string
sumber