![]() 10分 |
是仅仅单词转复数,还是先从句子里匹配出名词,再转复数?
这难度差异不是一点两点 |
![]() |
只是针对单个单词转成复数形式,最好是和EF同样的规则,因为我的类名是EF自动生成的单复数形式,现在我要自动获取调用,必须要得到和EF相同的单复数形式
|
![]() 20分 |
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;
}
}
|
![]() |
谢谢各位,我已找到答案,跟大家分享下:System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(new CultureInfo(“en”)).Pluralize(“英文”)
|

