Gibt es in c # einen Algorithmus zum Singularisieren - Pluralisieren eines Wortes (auf Englisch) oder gibt es eine .net-Bibliothek, um dies zu tun (möglicherweise auch in verschiedenen Sprachen)?
106
Sie haben auch den System.Data.Entity.Design.PluralizationServices.PluralizationService .
UPDATE : Alte Antwort verdient Aktualisierung. Es gibt jetzt auch Humanizer: https://github.com/MehdiK/Humanizer
Ich kann es für Esperanto tun, ohne Sonderfälle!
Für Englisch wäre es nützlich, sich mit den Regeln für reguläre Pluralformen von Substantiven sowie für unregelmäßige Pluralformen von Substantiven vertraut zu machen . Es gibt einen ganzen Wikipedia-Artikel über den englischen Plural , der möglicherweise auch einige hilfreiche Informationen enthält.
quelle
Die meisten ORMs haben einen Stich drauf, obwohl sie im Allgemeinen nicht perfekt sind. Ich weiß, dass Castle eine Inflector-Klasse hat, in der Sie wahrscheinlich herumstöbern können. Es "perfekt" zu machen ist jedoch keine leichte Aufgabe (englische "Regeln" sind keine wirklichen Regeln :)), daher hängt es davon ab, ob Sie mit einem "vernünftigen Schätz" -Ansatz zufrieden sind.
quelle
Ich habe in Java betrogen - ich wollte in der Lage sein, eine korrekte Zeichenfolge für "Es gab n etwas (e)" zu erstellen, also schrieb ich Folgendes. wenig überladene Dienstprogrammmethode:
so aufgerufen
quelle
Ich habe dafür in .net (C #) eine winzige Bibliothek namens Pluralizer erstellt (nicht überraschend).
Es soll mit ganzen Sätzen arbeiten, so etwas wie String.Format.
Es funktioniert im Grunde so:
Es kann auch viel mehr als das. Lesen Sie mehr darüber in meinem Blog . Es ist auch in NuGet verfügbar.
quelle
Ich habe einen zusammen mit dem Rails-Pluralizer zusammengeschlagen. Sie können meinen Blog-Beitrag hier oder auf Github hier sehen
quelle
Da die Frage für C # war, ist hier eine nette Variation der Software Monkey-Lösung (wieder ein bisschen "Cheat", aber für mich wirklich die praktischste und wiederverwendbarste Art, dies zu tun):
Die Verwendung ist wie folgt:
quelle
Subsonic 3 hat eine
Inflector
Klasse, die mich beeindruckt hat, indem sie sichPerson
in verwandelt hatPeople
. Ich habe einen Blick auf die Quelle geworfen und festgestellt, dass sie mit einer fest codierten Liste natürlich ein wenig schummelt, aber das ist wirklich die einzige Möglichkeit, dies auf Englisch zu tun und wie Menschen es tun - wir erinnern uns an den Singular und den Plural jedes Wortes und wenden nicht nur eine Regel an . Da es nicht männlich / weiblich (/ neutral) gibt, um die Mischung zu ergänzen, ist es viel einfacher.Hier ist ein Ausschnitt:
Es erklärt einige Wörter, die keine Pluraläquivalente haben, wie das Ausrüstungsbeispiel. Wie Sie wahrscheinlich sehen können, wird es einfach
Regex
durch $ 1 ersetzt.Update:
Es scheint, dass Subsonic
Inflector
die CastleInflector
ActiveRecord- Klasse infiziert !quelle
MSDN enthält nicht viel Dokumentation zur spezifischen Verwendung der PluralizationService-Klasse. Hier ist eine Unit-Test-Klasse (NUnit), um die grundlegende Verwendung zu veranschaulichen. Beachten Sie den seltsamen Testfall unten, der zeigt, dass der Service nicht perfekt ist, wenn es um nicht standardmäßige Pluralformen geht.
quelle
Diese Seite zeigt die Verwendung
PluralizationService
vonSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
quelle
Verwenden der Northwind-Beispieldatenbank von Microsoft:
Singularize singularisiert nicht "Order_Details" Es gibt "Order_Details" mit dem
s
am Ende zurück. Was ist die Arbeit um?quelle