Salam semuanya ... Saya perlu Trim
a String
. Tapi saya ingin menghapus semua ruang kosong yang berulang di dalam String itu sendiri, tidak hanya di akhir atau di awal. Saya bisa melakukannya dengan metode seperti:
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
Yang saya dapatkan dari sini . Tapi saya ingin potongan kode ini dipanggil di dalam String.Trim()
dirinya sendiri, jadi saya pikir saya perlu memperpanjang atau membebani atau mengganti Trim
metode ... Apakah ada cara untuk melakukan itu?
Terima kasih sebelumnya.
c#
string
extension-methods
trim
Girardi
sumber
sumber
Apa itu mungkin? Ya, tetapi hanya dengan metode ekstensi
Kelas
System.String
disegel sehingga Anda tidak dapat menggunakan penggantian atau warisan.public static class MyStringExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } } // usage: string s = "test !"; s = s.ConvertWhitespacesToSingleSpaces();
sumber
String.Trim
diambil.Ada ya dan tidak untuk pertanyaan Anda.
Ya, Anda dapat memperluas tipe yang sudah ada dengan menggunakan metode ekstensi. Metode ekstensi, secara alami, hanya dapat mengakses antarmuka publik dari jenis tersebut.
public static string ConvertWhitespacesToSingleSpaces(this string value) {...} // some time later... "hello world".ConvertWhitespacesToSingleSpaces()
Tidak, Anda tidak dapat memanggil metode ini
Trim()
. Metode ekstensi tidak berpartisipasi dalam overloading. Saya pikir seorang kompilator bahkan harus memberi Anda pesan kesalahan yang merinci ini.Metode ekstensi hanya terlihat jika namespace berisi tipe yang mendefinisikan metode tersebut sedang digunakan.
sumber
Metode penyuluhan!
public static class MyExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } }
sumber
Selain menggunakan metode ekstensi - kemungkinan merupakan kandidat yang baik di sini - dimungkinkan juga untuk "membungkus" sebuah objek (misalnya "komposisi objek"). Selama formulir yang dibungkus tidak berisi lebih banyak informasi daripada hal yang dibungkus, maka item yang dibungkus dapat diteruskan dengan rapi melalui konversi implisit atau eksplisit tanpa kehilangan informasi: hanya perubahan jenis / antarmuka.
Selamat membuat kode.
sumber