24 Stimmen

Wie macht man Wörter im Plural zum Singular?

Ich bereite einige Tabellennamen für einen ORM vor, und ich möchte mehrere Tabellennamen in einzelne Entitätsnamen umwandeln. Mein einziges Problem ist, einen Algorithmus zu finden, der dies zuverlässig tut. Hier ist, was ich im Moment tue:

  1. Endet ein Wort mit -ies ersetze ich die Endung durch -y
  2. Endet ein Wort mit -es streiche ich dieses Ende. Das klappt aber nicht immer - zum Beispiel ersetzt es Typen avec Typ
  3. Andernfalls entferne ich einfach das nachgestellte -s

Kennt jemand einen besseren Algorithmus?

6 Stimmen

Ich habe den Plural der Tabellennamen schon vor langer Zeit aufgegeben und verwende nur noch Singularnamen für die Tabellen, das spart mir Tipparbeit!

7 Stimmen

Alle Ihre Regeln haben triviale Fälle, in denen sie versagen: "Torten", "Bäume", "Bus". Es gibt natürlich noch zig andere. Die einzige Antwort ist (wie Tal Pressman sagt), dass Sie es mit natürlicher Sprache zu tun haben, wo Ausnahmen die Regel sind.

0 Stimmen

.NET Inflector ist großartig, Sie können Regeln, Ausnahmen, ungewöhnliche Pluralisierungen, Nicht-Zählbares wie Fisch und Schaf usw. usw. definieren. Großartige Bibliothek

0voto

kevin Punkte 1626

Nehmen wir das Python-Paket "inflect".

"Plural, Singular, Ordnungszahl und unbestimmter Artikel richtig bilden; Zahlen in Wörter umwandeln".

https://pypi.python.org/pypi/inflect

0voto

Harper Punkte 1555

Ich bin gerade auf dieses Problem gestoßen und habe in 10 Minuten eine Lösung gefunden.

Ich denke, @paxdiablo bietet einen guten Gedanken auf den Bau einer transformierenden Motor und Regeln hinzufügen. Ich baue eine Wörterbuchregel und drei allgemeine Regeln. Die Wörterbuchregel geht zu einer Diktatdatei, um Ausnahmefälle nachzuschlagen, während die drei allgemeinen Regeln jeweils "ies", "es" und "s" behandeln.

Es kann jedoch zu viel Zeit in Anspruch nehmen, alle Ausnahmen in das Wörterbuch aufzunehmen, z. B. Torten/Bäume/Bus usw. Eine Verbesserung, die ich vorgenommen habe, um mit diesen Wörtern umzugehen, besteht darin, sicherzustellen, dass sie zurückkonvertiert werden können.

Wenn wir z. B. fälschlicherweise die "es"-Regel auf "trees" anwenden und es in "tre" umwandeln, erhalten wir beim Versuch, die Pluralform wieder hinzuzufügen, "tres", was nicht dem ursprünglichen "tree" entspricht, und Sie wissen, dass die "es"-Regel nicht angewendet werden sollte. Mit dieser Methode können die oben genannten Ausnahmen gelöst werden, ohne sie in eine Wörterbuchdatei aufzunehmen.

Am Ende habe ich eine Wörterbuchdatei mit 42 wirklich außergewöhnlichen Wörtern, und sie könnte die meisten Fälle bewältigen.

-1voto

Marc Climent Punkte 9414

Es gibt eine schöne Implementierung eines Flektors im uNnAddIns-Projekt, das sogar einen experimentellen spanischen Flektor implementiert. Die Idee ist von Rails übernommen Beuger-Modul .

Es kann auch für andere Dinge verwendet werden, wie die Konvertierung von CamelCase in normalen Text und andere Goodies und zum Beispiel die Generierung von browserfreundlichen URLs aus Titeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X