首页 新闻 会员 周边

C# 正则表达式问题?

0
悬赏园豆:5 [待解决问题]

   有这样的一个字符串,如:"432332342############3@@@@@@@@@sadfasdasdfa********asdfasdf"

经过运算后,格式为:“432332341#3@sadfaasdasdfa*asdfasdf"就是把# @ * 去重复。

 我使用正则表达式出现:

 1   string source="432332342############3@@@@@@@@@sadfasdasdfa********asdfasdf";
 2             string[] patterns=new string[] {@"\S#+",@"\S\*+","\\S(\\@)+"};
 3             char[] replacements = new char[] { '#', '*', '@' };
 4             Regex rgx;
 5             string temp=source;
 6             for (var i = 0; i < patterns.Length; i++)
 7             {   
 8               
 9                 rgx = new Regex(patterns[i]);
10                 string a = replacements[i].ToString();
11                 temp = rgx.Replace(temp, replacements[i].ToString());
12                
13             }
View Code

但是结果不对。请问大神,我该如何修正我的代码。

Company的主页 Company | 初学一级 | 园豆:32
提问于:2015-11-09 16:51
< >
分享
所有回答(4)
0

按着你的意思,应该是这样吧

string[] patterns = new string[] { @"#+", @"\*+", "@+" };

jello chen | 园豆:7306 (大侠五级) | 2015-11-09 17:41
0

试试:source = Regex.Replace(source, "([\\#\\@\\*])+", "$1");

geeksnail | 园豆:368 (菜鸟二级) | 2015-11-10 11:59
0

string[] patterns=new string[] {@"\S{0}#+",@"\S\*+","\\S(\\@)+"};

silianpan | 园豆:571 (小虾三级) | 2015-11-11 09:34
0

string input = "#432332342############3@@@@@@@@@sadfasdasdfa********asdfasdf*";
string partten = @"(#|\*|@)(\1)+";
Regex reg = new Regex(partten);
string res = input;

res = Regex.Replace(res, partten, @"$1");

Console.WriteLine(res);

clarlespeng | 园豆:469 (菜鸟二级) | 2015-11-11 12:02

最后一参数什么意思,我不是很明白。

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-11 15:30

@Company: Regex.Replace()  最后一个参数 是你需要替换的 字符串

这里 用  “$1” 是后向引用  引用的是 partten 匹配的"(#|\*|@)" 匹配到的表达式1 如 # @ *

支持(1) 反对(0) clarlespeng | 园豆:469 (菜鸟二级) | 2015-11-11 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册