有这样的一个字符串,如:"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 }
但是结果不对。请问大神,我该如何修正我的代码。
按着你的意思,应该是这样吧
string[] patterns = new string[] { @"#+", @"\*+", "@+" };
试试:source = Regex.Replace(source, "([\\#\\@\\*])+", "$1");
string[] patterns=new string[] {@"\S{0}#+",@"\S\*+","\\S(\\@)+"};
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);
最后一参数什么意思,我不是很明白。
@Company: Regex.Replace() 最后一个参数 是你需要替换的 字符串
这里 用 “$1” 是后向引用 引用的是 partten 匹配的"(#|\*|@)" 匹配到的表达式1 如 # @ *