我试图获取匹配集合的特殊字符,因此我创建了此代码:
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
放在方括号()中,则会出现错误。我做错了什么?
答案 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());
}