是否有任何.NET库用于确定名词的Indefinite Article?
我的粗略尝试是在下面,这可能适用于我的99%的使用(这是可以接受的)只是想知道是否有任何已建立的替代方案?
public static string GetIndefinateArticle(string noun)
{
if(string.IsNullOrEmpty(noun))
return noun;
var first = noun[0];
if(first == 'a' ||
first == 'e' ||
first == 'i' ||
first == 'o')
return "an " + noun;
return "a " + noun;
}
Run Code Online (Sandbox Code Playgroud)
更新:Eamon在评论中指出了一个重复的问题:如何正确地在单词前加上"a"和"an"?我会把这个Q留在这里然后打开,因为我还没有真正得到答案.
如果这是您需要认真对待的事情,您可以考虑将Ruby语言学(英语)库移植到.Net.它是开源的,并且在计算正确的文章方面做得非常好.
http://deveiate.org/projects/Linguistics/
由于您真正要做的只是检查字符串中的模式,因此您可以使用正则表达式。这也应该允许未来扩展像lutge098谈到的字母组合:
public static string GetIndefinateArticle(string noun)
{
if (Regex.IsMatch(noun, "^([aeio]|un|ul)", RegexOptions.IgnoreCase))
return "an " + noun;
else
return "a " + noun;
}
Run Code Online (Sandbox Code Playgroud)
我要做的是:
var first = noun[0];
var second = noun[1];
if(first == 'a' ||
first == 'e' ||
first == 'i' ||
first == 'o')
return "an " + self;
if(first == 'u')
if (second == 'n' ||
second == 'l')
return "an " + self;
if(first == 'h')
if (second == 'i')
return "an " + self;
return "a " + self;
Run Code Online (Sandbox Code Playgroud)
因此,您可以定义某些情况,其中某些字母相互组合形成某种声音。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |