Apakah ada algoritma dalam c # untuk singularisasi - membuat jamak sebuah kata (dalam bahasa Inggris) atau apakah ada pustaka .net untuk melakukan ini (mungkin juga dalam bahasa yang berbeda)?
106
Anda juga memiliki System.Data.Entity.Design.PluralizationServices.PluralizationService .
PEMBARUAN : Jawaban lama perlu diperbarui. Sekarang ada juga Humanizer: https://github.com/MehdiK/Humanizer
Saya bisa melakukannya untuk orang Esperanto, tanpa kasus khusus!
Untuk bahasa Inggris, akan berguna jika Anda terbiasa dengan aturan untuk Kata Benda Jamak Beraturan , serta Bentuk Jamak Tidak Beraturan dari Kata Benda . Ada seluruh artikel Wikipedia dalam bahasa Inggris jamak , yang mungkin memiliki beberapa informasi berguna juga.
sumber
Kebanyakan ORM mencoba melakukannya, meskipun umumnya tidak sempurna. Saya tahu Castle memiliki Kelas Inflektor yang mungkin bisa Anda lihat-lihat. Melakukannya "dengan sempurna" bukanlah tugas yang mudah ("rules" dalam bahasa Inggris sebenarnya bukan aturan :)), jadi itu tergantung apakah Anda senang dengan pendekatan "tebakan masuk akal".
sumber
Saya menyontek di Java - saya ingin dapat menghasilkan string yang benar untuk "Ada n sesuatu", jadi saya menulis foll. sedikit metode utilitas yang kelebihan beban:
dipanggil seperti itu
sumber
Saya telah membuat perpustakaan kecil untuk ini di .net (C #), yang disebut Pluralizer (tidak mengejutkan).
Ini dimaksudkan untuk bekerja dengan kalimat penuh, seperti halnya String.Format.
Ini pada dasarnya bekerja seperti ini:
Itu juga bisa melakukan lebih dari itu. Baca lebih lanjut tentang itu di blog saya . Ini juga tersedia di NuGet.
sumber
Saya menggabungkannya berdasarkan Rails pluralizer. Anda dapat melihat posting blog saya di sini , atau di github di sini
sumber
Karena pertanyaannya adalah untuk C #, berikut adalah variasi yang bagus pada solusi Software Monkey (lagi-lagi sedikit "curang", tetapi bagi saya cara yang paling praktis dan dapat digunakan kembali untuk melakukan ini):
Penggunaannya sebagai berikut:
sumber
Subsonik 3 memiliki
Inflector
kelas yang membuat saya terkesan dengan memutarPerson
kePeople
. Saya mengintip sumbernya dan menemukan itu secara alami curang sedikit dengan daftar hardcode tetapi itu benar-benar satu-satunya cara melakukannya dalam bahasa Inggris dan bagaimana manusia melakukannya - kami mengingat bentuk tunggal dan jamak dari setiap kata dan tidak hanya menerapkan aturan . Karena tidak ada maskulin / feminin (/ netral) untuk ditambahkan ke dalam campuran, itu jauh lebih sederhana.Berikut cuplikannya:
Ini menjelaskan beberapa kata yang tidak memiliki padanan jamak, seperti contoh perlengkapan. Seperti yang mungkin bisa Anda katakan, itu adalah
Regex
penggantian sederhana menggunakan $ 1.Pembaruan:
Tampaknya Subsonik sebenarnya
Inflector
adalah kelas Castle ActiveRecordInflector
!sumber
Tidak banyak dokumentasi dari MSDN tentang penggunaan khusus kelas PluralizationService jadi di sini ada kelas uji unit (NUnit) untuk menunjukkan penggunaan dasar. Perhatikan kasus uji ganjil di bagian bawah yang menunjukkan bahwa layanan tersebut tidak sempurna dalam hal bentuk jamak non-standar.
sumber
Halaman ini menunjukkan bagaimana menggunakan
PluralizationService
dariSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
sumber
Menggunakan database contoh Northwind Microsoft:
Singularize tidak Singularize "Order_Details" Ini mengembalikan "Order_Details" dengan
s
di akhir. Apa pekerjaannya?sumber