C# 将英文转为复数形式

专注开发 2015-03-26 04:20:38
我现在需要一个能将英文单词转为复数形式的方法,就像EF自动生成实体类时,可以选择生成单复数形式一样,哪位大神知道啊,风险一下,小弟在此拜谢了
...全文
489 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyooepng 2016-10-11
  • 打赏
  • 举报
回复
Mark一下
专注开发 2015-03-27
  • 打赏
  • 举报
回复
谢谢各位,我已找到答案,跟大家分享下:System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(new CultureInfo("en")).Pluralize("英文")
本拉灯 2015-03-26
  • 打赏
  • 举报
回复

ahjesus 单词单数-复数相互转换C#

看codesmith内置的模板在生成存储过程的时候有单复数的转换,用相同的函数名实现了一个

public static class StringUtil
    {
        /// <summary>
        /// 单词变成单数形式
        /// </summary>
        /// <param name="word"></param>
        /// <returns></returns>
        public static string ToSingular(string word)
        {
            Regex plural1 = new Regex("(?<keep>[^aeiou])ies$");
            Regex plural2 = new Regex("(?<keep>[aeiou]y)s$");
            Regex plural3 = new Regex("(?<keep>[sxzh])es$");
            Regex plural4 = new Regex("(?<keep>[^sxzhyu])s$");

            if (plural1.IsMatch(word))
                return plural1.Replace(word, "${keep}y");
            else if (plural2.IsMatch(word))
                return plural2.Replace(word, "${keep}");
            else if (plural3.IsMatch(word))
                return plural3.Replace(word, "${keep}");
            else if (plural4.IsMatch(word))
                return plural4.Replace(word, "${keep}");

            return word;
        }
        /// <summary>
        /// 单词变成复数形式
        /// </summary>
        /// <param name="word"></param>
        /// <returns></returns>
        public static string ToPlural(string word)
        {
            Regex plural1 = new Regex("(?<keep>[^aeiou])y$");
            Regex plural2 = new Regex("(?<keep>[aeiou]y)$");
            Regex plural3 = new Regex("(?<keep>[sxzh])$");
            Regex plural4 = new Regex("(?<keep>[^sxzhy])$");

            if (plural1.IsMatch(word))
                return plural1.Replace(word, "${keep}ies");
            else if (plural2.IsMatch(word))
                return plural2.Replace(word, "${keep}s");
            else if (plural3.IsMatch(word))
                return plural3.Replace(word, "${keep}es");
            else if (plural4.IsMatch(word))
                return plural4.Replace(word, "${keep}s");

            return word;
        }
    }


专注开发 2015-03-26
  • 打赏
  • 举报
回复
@starfd,@Z65443344 大神求救啊 !!!
专注开发 2015-03-26
  • 打赏
  • 举报
回复
只是针对单个单词转成复数形式,最好是和EF同样的规则,因为我的类名是EF自动生成的单复数形式,现在我要自动获取调用,必须要得到和EF相同的单复数形式
於黾 2015-03-26
  • 打赏
  • 举报
回复
是仅仅单词转复数,还是先从句子里匹配出名词,再转复数? 这难度差异不是一点两点
  • 打赏
  • 举报
回复

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧