[c#] C #에 단 수화-단어를 복수화하는 알고리즘이 있습니까?

C #에 단어를 복수화 (영어로)하는 알고리즘이 있습니까? 아니면이를 수행하기위한 .net 라이브러리가 있습니까 (다른 언어로도 가능)?



답변

System.Data.Entity.Design.PluralizationServices.PluralizationService 도 있습니다 .

업데이트 : 이전 답변은 업데이트 할 가치가 있습니다. 이제 Humanizer도 있습니다 : https://github.com/MehdiK/Humanizer


답변

특별한 경우없이 에스페란토로 할 수 있습니다!

string plural(string noun) { return noun + "j"; }

영어의 경우 정규 복수 명사불규칙 복수 명사 규칙에 익숙해지는 것이 유용 할 것 입니다. 영어 복수형 에 대한 전체 Wikipedia 기사가 있으며,이 기사 에는 유용한 정보도있을 수 있습니다.


답변

대부분의 ORM은 일반적으로 완벽하지는 않지만 찌르는 경향이 있습니다. 캐슬에는 아마 당신이 찌를 수있는 인플 렉터 클래스 가 있다는 것을 알고 있습니다. “완벽하게”하는 것은 쉬운 일이 아닙니다 (영어 “규칙”은 실제로 규칙이 아닙니다 :)). 따라서 “합리적인 추측”접근 방식에 만족하는지 여부에 따라 다릅니다.


답변

나는 자바에서 속임수를 썼다. “There were n something (s)”에 대한 올바른 문자열을 생성하고 싶었 기 때문에 다음 글을 썼다. 약간의 과부하 유틸리티 방법 :

static public String pluralize(int val, String sng) {
    return pluralize(val,sng,(sng+"s"));
    }

static public String pluralize(int val, String sng, String plu) {
    return (val+" "+(val==1 ? sng : plu));
    }

그렇게 호출

System.out.println("There were "+pluralize(count,"something"));
System.out.println("You have broken "+pluralize(count,"knife","knives"));


답변

.net (C #)에서 Pluralizer (당연히)라는 작은 라이브러리를 만들었습니다.

String.Format과 같이 전체 문장으로 작업하기위한 것입니다.

기본적으로 다음과 같이 작동합니다.

var target = new Pluralizer();
var str = "There {is} {_} {person}.";

var single = target.Pluralize(str, 1);
Assert.AreEqual("There is 1 person.", single);

// Or use the singleton if you're feeling dirty:
var several = Pluralizer.Instance.Pluralize(str, 47);
Assert.AreEqual("There are 47 people.", several);

그것은 또한 그 이상을 할 수 있습니다. 내 블로그에서 자세한 내용을 읽어보십시오 . NuGet에서도 사용할 수 있습니다.


답변

Rails pluralizer를 기반으로 하나를 채찍질했습니다. 여기 에서 내 블로그 게시물을 보거나 여기 github에서 볼 수 있습니다.

output = Formatting.Pluralization(100, "sausage"); 


답변

질문이 C #에 대한 것이기 때문에 여기에 Software Monkey의 솔루션에 대한 멋진 변형이 있습니다 (다시 약간 “속임수”이지만 실제로는이를 수행하는 가장 실용적이고 재사용 가능한 방법).

    public static string Pluralize(this string singularForm, int howMany)
    {
        return singularForm.Pluralize(howMany, singularForm + "s");
    }

    public static string Pluralize(this string singularForm, int howMany, string pluralForm)
    {
        return howMany == 1 ? singularForm : pluralForm;
    }

사용법은 다음과 같습니다.

"Item".Pluralize(1) = "Item"
"Item".Pluralize(2) = "Items"

"Person".Pluralize(1, "People") = "Person"
"Person".Pluralize(2, "People") = "People"