Existe algum algoritmo em c # para singularizar - pluralizar uma palavra (em inglês) ou existe uma biblioteca .net para fazer isso (também pode estar em diferentes idiomas)?
106
Você também tem System.Data.Entity.Design.PluralizationServices.PluralizationService .
ATUALIZAÇÃO : a resposta antiga merece atualização. Agora também existe o Humanizer: https://github.com/MehdiK/Humanizer
Posso fazer pelo Esperanto, sem casos especiais!
Para o inglês, seria útil se familiarizar com as regras para Plurais regulares de substantivos , bem como Plurais irregulares de substantivos . Há todo um artigo da Wikipedia no plural inglês , que também pode conter algumas informações úteis.
fonte
A maioria dos ORMs tenta fazer isso, embora geralmente não sejam perfeitos. Eu sei que Castle tem sua classe inflector, você provavelmente pode dar uma olhada. No entanto, fazê-lo "perfeitamente" não é uma tarefa fácil ("regras" em inglês não são realmente regras :)), então depende se você está satisfeito com uma abordagem de "palpite razoável".
fonte
Eu trapaceei em Java - queria ser capaz de produzir uma string correta para "Houve n algo (s)", então escrevi o seguinte. método utilitário pouco sobrecarregado:
invocado assim
fonte
Eu criei uma pequena biblioteca para isso em .net (C #), chamada Pluralizer (sem surpresa).
Ele deve funcionar com frases completas, algo como String.Format.
Basicamente, funciona assim:
Também pode fazer muito mais do que isso. Leia mais sobre isso no meu blog . Também está disponível no NuGet.
fonte
Eu bati um junto com base no pluralizador Rails. Você pode ver minha postagem do blog aqui , ou no github aqui
fonte
Como a pergunta era para C #, aqui está uma boa variação da solução do Software Monkey (novamente um pouco "cheat", mas para mim realmente a maneira mais prática e reutilizável de fazer isso):
O uso é o seguinte:
fonte
Subsonic 3 tem uma
Inflector
classe que me impressionou ao sePerson
tornarPeople
. Eu dei uma olhada na fonte e descobri que naturalmente trapaceia um pouco com uma lista codificada, mas essa é realmente a única maneira de fazer isso em inglês e como os humanos fazem isso - lembramos do singular e do plural de cada palavra e não apenas aplicamos uma regra . Como não há masculino / feminino (/ neutro) para adicionar à mistura, é muito mais simples.Aqui está um snippet:
É responsável por algumas palavras que não possuem equivalentes no plural, como o exemplo do equipamento. Como você provavelmente pode dizer, ele faz um simples
Regex
substituição usando $ 1.Atualização:
Parece que Subsonic
Inflector
é de fato a classe Castle ActiveRecordInflector
!fonte
Não há muita documentação do MSDN sobre o uso específico da classe PluralizationService, então aqui está uma classe de teste de unidade (NUnit) para mostrar o uso básico. Observe o caso de teste estranho na parte inferior que mostra que o serviço não é perfeito quando se trata de formas plurais não padronizadas.
fonte
Esta página mostra como usar
PluralizationService
deSystem.Data.Entity
(.NET Framework 4.0)http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
fonte
Usando o banco de dados de exemplo Northwind da Microsoft:
Singularize não Singularize "Order_Details" Ele retorna "Order_Details" com
s
no final. Qual é a solução?fonte