Existe-t-il un algorithme en c # pour singulariser - pluraliser un mot (en anglais) ou existe-t-il une bibliothèque .net pour ce faire (peut-être également dans différentes langues)?
106
Vous disposez également de System.Data.Entity.Design.PluralizationServices.PluralizationService .
MISE À JOUR : l'ancienne réponse mérite d'être mise à jour. Il y a maintenant aussi Humanizer: https://github.com/MehdiK/Humanizer
Je peux le faire pour l'espéranto, sans cas particuliers!
Pour l'anglais, il serait utile de se familiariser avec les règles des pluriels réguliers de noms , ainsi que des pluriels irréguliers de noms . Il existe un article Wikipédia complet sur le pluriel anglais , qui peut également contenir des informations utiles.
la source
La plupart des ORM ont un coup de main, bien qu'ils ne soient généralement pas parfaits. Je sais que Castle a sa classe Inflector que vous pouvez probablement fouiller. Le faire "parfaitement" n'est cependant pas une tâche facile (les "règles" anglaises ne sont pas vraiment des règles :)), donc cela dépend si vous êtes satisfait d'une approche "raisonnable".
la source
J'ai triché en Java - je voulais être capable de produire une chaîne correcte pour "Il y avait n quelque chose (s)", alors j'ai écrit le foll. méthode utilitaire peu surchargée:
invoqué comme ça
la source
J'ai créé une petite bibliothèque pour cela en .net (C #), appelée Pluralizer (sans surprise).
Il est destiné à fonctionner avec des phrases complètes, quelque chose comme String.Format le fait.
Cela fonctionne essentiellement comme ceci:
Il peut également faire bien plus que cela. En savoir plus sur mon blog . Il est également disponible dans NuGet.
la source
J'en ai fouetté un ensemble basé sur le pluraliseur Rails. Vous pouvez voir mon article de blog ici , ou sur github ici
la source
Comme la question était pour C #, voici une belle variante de la solution de Software Monkey (encore une fois un peu "triche", mais pour moi vraiment la façon la plus pratique et réutilisable de faire cela):
L'utilisation est la suivante:
la source
Subsonic 3 a une
Inflector
classe qui m'a impressionné en tournantPerson
dansPeople
. J'ai jeté un coup d'œil à la source et j'ai trouvé que cela trompait naturellement un peu avec une liste codée en dur, mais c'est vraiment la seule façon de le faire en anglais et comment les humains le font - nous nous souvenons du singulier et du pluriel de chaque mot et n'appliquons pas seulement une règle . Comme il n'y a pas de masculin / féminin (/ neutre) à ajouter au mélange, c'est beaucoup plus simple.Voici un extrait:
Il rend compte de certains mots n'ayant pas d'équivalents pluriels, comme l'exemple d'équipement. Comme vous pouvez probablement le constater, il effectue un
Regex
remplacement simple en utilisant $ 1.Mise à jour:
Il semble que Subsonic
Inflector
est en fait la classe Castle ActiveRecordInflector
!la source
Pas beaucoup de documentation de MSDN sur l'utilisation spécifique de la classe PluralizationService donc voici une classe de test unitaire (NUnit) pour montrer l'utilisation de base. Remarquez le cas de test étrange en bas qui montre que le service n'est pas parfait lorsqu'il s'agit de formes plurielles non standard.
la source
Cette page montre comment utiliser
PluralizationService
deSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
la source
À l'aide de l'exemple de base de données Northwind de Microsoft:
Singularize ne singularise pas "Order_Details" Il renvoie "Order_Details" avec le
s
à la fin. Quel est le travail autour?la source