首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则组的轮换

2013-03-10 
正则组的替换Open zh-cn zh-hk日期 en-ww/我想把繁体的日期移到简体zh-cn里.变成:Open zh-

正则组的替换

<Open zh-cn="" zh-hk="日期" en-ww=""/>

我想把繁体的日期移到简体zh-cn=""里.变成:
<Open zh-cn="日期" zh-hk="日期" en-ww=""/>

希望是用正则组的方法实现.这样比较不容易出错.

正则组: (?<标签>正则) 
Regex reg = new Regex(@"");
            MatchCollection match = reg.Matches(str);
            foreach (Match m in match)
            {
                System.Console.WriteLine(m.Groups["标签"].Value);
            }
这样是找到匹配的组.
以前用正则都是找匹配.没试过替换.现在想替换.求大神指教.
[解决办法]
 string str = @"<Open zh-cn="""" zh-hk=""日期"" en-ww=""""/>";
Regex reg = new Regex(@"(?i)<Open\s*[^>]*?zh-cn=""([^""]*?)""[^>]*?zh-hk=""([^""]*?)""[^>]*?/>");
str = reg.Replace(str, @"(?is)(zh\-cn="")(?=[^<>]*?zh\-hk=""([^""]+))("")", @"<Open zh-cn=""$2"" zh-hk=""$2"" en-ww=""""/>");
Console.WriteLine(str);
           
[解决办法]
引用:
引用:str = Regex.Replace(str, @"(?is)(?=[^<>]*?zh\-hk=""([^""]+))(zh\-cn="")[^""]*("")", "$2$1$3");这个方法不能用.
我的步骤是
1.找到组一内容.
2.翻译成简体.
3.替换回组二内容.

 str = Regex.Replace(str, @"(?is)(?=[^<>]*?zh\-hk=""([^""]+))(zh\-cn="")[^""]*("")", delegate(Match m)
            {
                string s = m.Groups[2].Value;//繁体
                //转换简体s
                return s + m.Groups[1].Value + m.Groups[3].Value;
            });

热点排行