不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
Regex.Replace替换不完全的问题
编辑:dnawo 日期:2009-05-12
复制内容到剪贴板
程序代码

string txt = "五千二百一十一";
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
Console.WriteLine(Regex.Replace(txt, pattern, "$1$2", RegexOptions.IgnoreCase));
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
Console.WriteLine(Regex.Replace(txt, pattern, "$1$2", RegexOptions.IgnoreCase));
上边例子的结果为"五二百一一",而不是我的期望"五二一一",为什么呢?我们再来看一个例子:
复制内容到剪贴板
程序代码

string txt = "五千二百一十一";
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
MatchCollection matchs = Regex.Matches(txt, pattern, RegexOptions.IgnoreCase);
foreach (Match match in matchs)
Console.WriteLine(match.Value);
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
MatchCollection matchs = Regex.Matches(txt, pattern, RegexOptions.IgnoreCase);
foreach (Match match in matchs)
Console.WriteLine(match.Value);
结果:

五千二
一十一
一十一
也就是说,我们无法使用上边的代码对"二百一"进行替换。修改后正确的代码:
复制内容到剪贴板
程序代码

string txt = "五千二百一十一";
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
while (Regex.IsMatch(txt, pattern, RegexOptions.IgnoreCase))
txt = Regex.Replace(txt, pattern, "$1$2", RegexOptions.IgnoreCase);
Console.WriteLine(txt);
string pattern = "([零一二三四五六七八九])[十百千万亿]([零一二三四五六七八九])";
while (Regex.IsMatch(txt, pattern, RegexOptions.IgnoreCase))
txt = Regex.Replace(txt, pattern, "$1$2", RegexOptions.IgnoreCase);
Console.WriteLine(txt);
评论: 0 | 引用: 0 | 查看次数: 4687
发表评论
请登录后再发表评论!