依赖System.Data.Entity.Design包进行转换,而不是写几个正则去傻傻的匹配。

实测转换效果良好,可以识别people, woman, feet等特殊单复数单词。

简单使用

  • 单词转为单数形式

    1
    System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(new CultureInfo("en")).Singularize("英文单词");
  • 单词转为复数形式

    1
    System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(new CultureInfo("en")).Singularize("英文单词");

dll下载地址

System.Data.Entity.Design.dll 下载地址

封装为类

若需频繁使用此类功能,可以考虑封装为一个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System.Data.Entity.Design.PluralizationServices;
using System.Globalization;

namespace Handlers
{

/// <summary>
/// 单词辅助方法
/// </summary>
/// <author name="CuratorC"></author>
public static class WordHandler
{
// 利用静态属性达到单例模式的效果
private static PluralizationService Service => _service ??= PluralizationService.CreateService(new CultureInfo("en"));
private static PluralizationService _service = null;

/// <summary>
/// 将单词转换为单数形式
/// </summary>
/// <param name="word">单词</param>
/// <author name="CuratorC"></author>
/// <returns></returns>
public static string ToSingular(string word)
{
return Service.Singularize(word);
}

/// <summary>
/// 将单词转换为复数形式
/// </summary>
/// <param name="word"></param>
/// <author name="CuratorC"></author>
/// <returns></returns>
public static string ToPlural(string word)
{
return Service.Pluralize(word);
}
}

/// <summary>
/// 单词多状态聚合类
/// </summary>
/// <author name="CuratorC"></author>
public class MultipleWords
{
public string Singular;
public string Plural;
/// <summary>
/// 构造方法
/// </summary>
/// <param name="word">单词</param>
/// <author name="CuratorC"></author>
public MultipleWords(string word)
{
Singular = WordHandler.ToSingular(word);
Plural = WordHandler.ToPlural(Singular);
}

/// <summary>
/// 设置新的单词
/// </summary>
/// <param name="word"></param>
/// <author name="CuratorC"></author>
/// <returns></returns>
public MultipleWords Set(string word)
{
Singular = WordHandler.ToSingular(word);
Plural = WordHandler.ToPlural(Singular);
return this;
}
}
}

使用方法

1
2
3
4
5
6
var words = new MultipleWords("people");
Console.WriteLine(words.Singular);
Console.WriteLine(words.Plural);
words = new MultipleWords("company");
Console.WriteLine(words.Singular);
Console.WriteLine(words.Plural);