¿Existe algún algoritmo en c # para singularizar - pluralizar una palabra (en inglés) o existe una biblioteca .net para hacer esto (puede estar también en diferentes idiomas)?
106
También tiene System.Data.Entity.Design.PluralizationServices.PluralizationService .
ACTUALIZACIÓN : La respuesta anterior merece una actualización. Ahora también hay Humanizer: https://github.com/MehdiK/Humanizer
Puedo hacerlo para Esperanto, ¡sin casos especiales!
Para el inglés, sería útil familiarizarse con las reglas para Plurales regulares de sustantivos , así como Plurales irregulares de sustantivos . Hay un artículo completo de Wikipedia sobre el plural en inglés , que también puede tener información útil.
fuente
La mayoría de los ORM lo intentan, aunque generalmente no son perfectos. Sé que Castle tiene su clase Inflector que probablemente puedas hurgar . Sin embargo, hacerlo "perfectamente" no es una tarea fácil (las "reglas" en inglés no son realmente reglas :)), por lo que depende de si está satisfecho con un enfoque de "conjetura razonable".
fuente
Hice trampa en Java: quería poder producir una cadena correcta para "No había n algo (s)", así que escribí lo siguiente. método de utilidad poco sobrecargado:
invocado así
fuente
He creado una pequeña biblioteca para esto en .net (C #), llamada Pluralizer (como era de esperar).
Está destinado a funcionar con oraciones completas, algo como String.Format.
Básicamente funciona así:
También puede hacer mucho más que eso. Lea más sobre esto en mi blog . También está disponible en NuGet.
fuente
Batí uno juntos basado en el pluralizador Rails. Puedes ver la publicación de mi blog aquí , o en github aquí.
fuente
Como la pregunta era para C #, aquí hay una buena variación de la solución de Software Monkey (de nuevo un poco "trampa", pero para mí es la forma más práctica y reutilizable de hacer esto):
El uso es el siguiente:
fuente
Subsonic 3 tiene una
Inflector
clase que me impresionó al convertirsePerson
enPeople
. Eché un vistazo a la fuente y descubrí que, naturalmente, hace un poco de trampa con una lista codificada, pero esa es realmente la única forma de hacerlo en inglés y cómo lo hacen los humanos: recordamos el singular y el plural de cada palabra y no solo aplicamos una regla . Como no hay masculino / femenino (/ neutral) para agregar a la mezcla, es mucho más simple.Aquí hay un fragmento:
Explica algunas palabras que no tienen equivalentes en plural, como el ejemplo de equipo. Como probablemente pueda ver, hace un
Regex
reemplazo simple usando $ 1.Actualización:
¡Parece que Subsonic
Inflector
es de hecho la clase Castle ActiveRecordInflector
!fuente
No hay mucha documentación de MSDN sobre el uso específico de la clase PluralizationService, así que aquí hay una clase de prueba unitaria (NUnit) para mostrar el uso básico. Observe el extraño caso de prueba en la parte inferior que muestra que el servicio no es perfecto cuando se trata de formas plurales no estándar.
fuente
Esta página muestra cómo utilizar
PluralizationService
deSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
fuente
Usando la base de datos de ejemplo Northwind de Microsoft:
Singularize no Singularize "Order_Details" Devuelve "Order_Details" con el
s
al final. ¿Cuál es la solución?fuente