【问题标题】:Is there a bug in C#'s PluralizationService, or am I not setting something up properly?C# 的 PluralizationService 中是否存在错误,或者我没有正确设置某些内容?
【发布时间】:2021-07-15 13:23:34
【问题描述】:

除了PluralizationService 的标准初始化之外,我没有进行任何特殊设置。

PluralizationService ps = PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us"));

    // they may have said pigS, so we will singularize it
    if (ps.IsPlural(temp_word))
        temp_word = ps.Singularize(temp_word);```

我的程序允许我的游戏中的玩家搜索动物。当他们搜索goatssheeppigs 时,系统工作正常。 ps.Singularize 函数在所有情况下都能正常工作。 (对象类是pig 不是pigssheepgoat 不是goats。)

当有人搜索horses 时,乐趣就开始了。 ps.Singularize 函数返回 hors。 是否有某种我忘记初始化的规则或其他什么,或者这是一个直接的错误。

我真的不希望每次奇异化失败都特例。

【问题讨论】:

标签: c# string


【解决方案1】:

感谢大家的提示和见解。 我想我已经找到了答案,(尽管我更希望该功能只适用于常见的英语单词。) 解决方法在这里:

关于 ICustomPluralizationMapping 我们可以创建我们的 自己的单数和复数词。为此,我们需要帮助 “ICustomPluralizationMapping”接口。它代表了一个集合 单词的单复数形式。

只有一种方法

void AddWord(string single, string复数) 方法添加单数 和一个单词的复数形式 System.Data.Entity.Design.PluralizationServices.ICustomPluralizationMapping 目的。 https://www.dotnetfunda.com/articles/show/2260/let-us-learn-pluralizationservices-of-net-40

因此,我可以将任何会在字典中弄乱的单词添加到字典中,而不会因为一堆特殊情况而使我的代码变得丑陋。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多