这个简单
string str = "asdasd-qwe-qwe-qwa,aqweq,[a-a-1.gif],asd-123asd";
Regex rgx = new Regex(@"\[[^]]+\]");
str=rgx.Replace(str, (m) =>
{
return m.Value.Replace("-", "_");
});
Console.WriteLine(str);
或者
string str = "asdasd-qwe-qwe-qwa,aqweq,[a-a-1.gif],asd-123asd";
str = Regex.Replace(str, @"(?<=\[[^\]]*)-+(?=[^\]]*\])", "_");
Console.WriteLine(str);
如果你的格式都是类似形式的,应该都可以替换成功。