不能使用该方法作为成员不被称为' Match.Groups'

时间:2016-04-27 09:09:42

标签: c#

我试图获取匹配集合的特殊字符,因此我创建了此代码:

MatchCollection SpecialCharacter = Regex.Matches(data, "\\\\u([0-9a-fA-F]{4})");

foreach (Match sc in SpecialCharacter)
{
   data = data.Replace(sc.Value, (char)(Convert.ToInt32(sc.Groups(1).Value, 16)));// ERROR HERE
}

但是我收到了这个错误:

  

不能将该方法用作未被调用的成员' Match.Groups'。

在这一行:sc.Groups(1)似乎如果我将1放在方括号()中,则会出现错误。我做错了什么?

2 个答案:

答案 0 :(得分:4)

Groups - 成员是属性,而不是方法。因此,请改用:

data = data.Replace(sc.Value, (char)(Convert.ToInt32(sc.Groups[1].Value, 16)));

用方括号括起该组索引的位置。

当你来自VB时,你可以使用paranthesis作为method-parameter和array-index。在C#中,你必须使用方括号代替数组。

答案 1 :(得分:4)

除上述答案外:Sc.Value将为字符串,因此您无法为字符串分配字符值。所以你需要在赋值之前将字符转换为字符串:代码如下:

foreach (Match sc in SpecialCharacter)
{
     data = data.Replace(sc.Value, ((char)(Convert.ToInt32(sc.Groups[1].Value, 16))).ToString());
}