2011-04-10 66 views
0

我收到了一个字符串列表。我想检查那里的每一个字符串。有时,字符串可以有后缀_anim(X),其中X是一个整数。如果这样的字符串具有那种后缀,我需要检查所有其他具有相同“基数”(基数是没有后缀的部分)的字符串,最后将这些字符串分组并将它们发送给我的函数。如何检查我的字符串中的某个后缀?

因此,考虑到下一个列表:

Man_anim(1)

女人

Man_anim(3)

Man_anim(2)

我的代码会发现基地Man有一个特殊的后缀,一个nd将生成一个新的列表,将所有的Man对象分组并根据圆括号内的值进行排列。该代码应该返回

Man_anim(1)

Man_anim(2)

Man_anim(3)

和发送该名单对我进行进一步的处理功能。

我的问题是,我该如何检查是否存在这样的后缀,然后检查括号内的值?

回答

3

如果您知道后缀将是_anim(X)每次(显然,与X变化),那么您可以使用正则表达式:

Regex.IsMatch(value, @"_anim\(\d+\)$") 

如果后缀不是至少是适度一致,那么您将不得不查看数据结构,如后缀树,您可以使用它来确定字符串中的常见结构。

+0

有趣。而不是使用IsMatch是不是有什么东西只是得到X的价值? – Voldemort 2011-04-10 22:30:08

+0

@Omega,是的,你需要在正则表达式中使用一个捕获组:“@”_ anim \( \ d + \)$“'。然后使用Regex.Match并检索名为“x”的组的值 – 2011-04-10 22:50:54

+0

On Regex.IsMatch(1,@“_ anim \( \ d + \)$”)它给了我一个关于@的错误,它告诉我“预期的表达式“ – Voldemort 2011-04-10 22:57:43

相关问题