Есть ли какой-либо алгоритм в С # для сингулярности - множественного числа (на английском языке) или существует ли для этого библиотека .net (может быть также на разных языках)?
106
У вас также есть System.Data.Entity.Design.PluralizationServices.PluralizationService .
ОБНОВЛЕНИЕ : старый ответ заслуживает обновления. Теперь есть Humanizer: https://github.com/MehdiK/Humanizer
Я могу сделать это для эсперанто, без особых случаев!
Для английского языка было бы полезно ознакомиться с правилами для правильного множественного числа существительных , а также неправильного множественного числа существительных . Есть целая статья в Википедии об английском множественном числе , в которой тоже может быть полезная информация.
источник
Большинство ORM пытаются это сделать, хотя в целом они не идеальны. Я знаю, что у Касла есть свой Inflector Class, вы, вероятно, можете повозиться . Однако сделать это «идеально» - непростая задача (английские «правила» на самом деле не правила :)), поэтому все зависит от того, довольны ли вы подходом «разумного предположения».
источник
Я жульничал в Java - я хотел иметь возможность создать правильную строку для «Там было n чего-то (а)», поэтому я написал следующее. немного перегруженный служебный метод:
вызывается так
источник
Я создал для этого крошечную библиотеку в .net (C #), которая называется Pluralizer (неудивительно).
Он предназначен для работы с полными предложениями, что-то вроде String.Format.
В основном это работает так:
Он также может сделать гораздо больше. Подробнее об этом читайте в моем блоге . Он также доступен в NuGet.
источник
Я собрал один из них на основе плюрализатора Rails. Вы можете увидеть мою запись в блоге здесь или на github здесь
источник
Поскольку вопрос был для C #, вот хороший вариант решения Software Monkey (опять же, немного «чит», но для меня это действительно наиболее практичный и многоразовый способ сделать это):
Использование следующее:
источник
У Subsonic 3 есть
Inflector
класс, который меня впечатлил, превративPerson
вPeople
. Я заглянул в источник и обнаружил, что он, естественно, немного обманывает с жестко запрограммированным списком, но это действительно единственный способ сделать это на английском языке и как это делают люди - мы помним единственное и множественное число каждого слова, а не просто применяем правило . Поскольку здесь нет мужского / женского (/ нейтрального), чтобы добавить к смеси, это намного проще.Вот отрывок:
Это объясняет, что некоторые слова не имеют эквивалентов во множественном числе, как в примере с оборудованием. Как вы, наверное, догадались, он выполняет простую
Regex
замену с использованием $ 1.Обновление:
похоже, Subsonic
Inflector
- это фактическиInflector
класс Castle ActiveRecord !источник
Не так много документации от MSDN по конкретному использованию класса PluralizationService, поэтому вот класс модульного тестирования (NUnit) для демонстрации базового использования. Обратите внимание на странный тестовый пример внизу, который показывает, что сервис не идеален, когда дело касается нестандартных форм множественного числа.
источник
На этой странице показано , как использовать
PluralizationService
изSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
источник
Используя пример базы данных Microsoft Northwind:
Singularize не объединяет «Order_Details» в единое целое. Он возвращает «Order_Details» с точкой
s
в конце. Что нужно делать?источник