去除重复数字 RT.Example: string str = "8912341253789";要求利用Regex去除 str 中重复的数字 最好附有代码说明,谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string result = Regex.Replace("8912341253789", @"(?s)(\d)(?=\d*\1)", ""); Console.WriteLine(result); Console.Read(); function dN(num, len){ var d = 0; return num.toString().replace(/-?0?\.0*/, "").replace(/\d/g, function(v, i, s){ return i-d >= len ? '' : (s.indexOf(v) < i ? (d++,'') : v); });}http://topic.csdn.net/u/20090520/10/8709aca9-40f5-40ef-9b41-6886ee9223e2.html自己看看吧 (?s) 开启单行模式(\d) 匹配数字 并捕获在第一组(?=\d*\1) 断言, 表示后面内容将是任意一个数字加上第一组所捕获的数字的内容 why not use linq ?void Main(){ string str = "8912341253789"; str=new string(str.ToCharArray().Distinct().ToArray()); Console.WriteLine(str); //89123457} 我这里就有一个解决方案,有点儿没明白~string str = "8912341253789";Regex reg = new Regex(@"((\d)\d*?)\2");while (str != (str = reg.Replace(str, "$1"))) { }richTextBox2.Text = str;/*--------输出--------89123457*/顺便说一下,我要的不是答案,是解析过程……谢谢了。 其他方法,例如LINQ,我可以解决这个问题…… void Main(){ string str = "8912341253789";Regex reg = new Regex(@"((\d)\d*?)\2");while (str != (str = reg.Replace(str, "$1"))) { Console.WriteLine(str);} Console.WriteLine("Result:"+str);/*--------输出--------89123412537989123412537891234253789123453789123457Result:89123457*/}//代码的逻辑是: 先从第一个8开始 找到第2个8时 就替换掉再从第2个9开始 找到9时就替换掉直到最后str= ( str = reg.Replace(str, "$1"))跳出循环 Regex中的 \2 是不是引用的((\d)\d*?) 呢?str = reg.Replace(str, "$1") 中的 $1表示什么呢?系统如何认识 $1? void Main(){ string str = "8912341253789";Regex reg = new Regex(@"(\d)(\d*)\1");while (str != (str = reg.Replace(str, "$1$2"))) {} Console.WriteLine("Result:"+str);}以上边代码为例:\1 即$1 指 8$2指 : 9123412537 记得primer上面有,但是忘记了 看来你真的是忘记了……C# Primer上面没有. 求助 debug信息不输出在output窗口了 拖动窗体时在窗体边缘显示虚框 结构体socket通信中,传输的数据带有汉字 .NETWeb项目运行后无法显示页面... 请问怎么实现根据在程序中从数据库中查询的结果,将结果转换成为EXCEL文件并打印?? DropDownList1选择了的text的value怎么获取 关于新增数据的问题 如何简单的判断整数最大3位小数最大两位的数字 帮忙啦!有关C#中数据类型转换的问题!!! 请问现在C#程序员的薪酬是多少? 30分求图片灰化的算法 = =。 再次求助
Console.WriteLine(result);
Console.Read();
var d = 0;
return num.toString().replace(/-?0?\.0*/, "").replace(/\d/g, function(v, i, s){
return i-d >= len ? '' : (s.indexOf(v) < i ? (d++,'') : v);
});
}
http://topic.csdn.net/u/20090520/10/8709aca9-40f5-40ef-9b41-6886ee9223e2.html自己看看吧
(\d) 匹配数字 并捕获在第一组
(?=\d*\1) 断言, 表示后面内容将是任意一个数字加上第一组所捕获的数字的内容
void Main()
{
string str = "8912341253789";
str=new string(str.ToCharArray().Distinct().ToArray());
Console.WriteLine(str); //89123457}
{
string str = "8912341253789";Regex reg = new Regex(@"((\d)\d*?)\2");while (str != (str = reg.Replace(str, "$1"))) { Console.WriteLine(str);} Console.WriteLine("Result:"+str);/*--------输出--------891234125379
89123412537
8912342537
891234537
89123457
Result:89123457
*/}
//代码的逻辑是: 先从第一个8开始 找到第2个8时 就替换掉
再从第2个9开始 找到9时就替换掉直到最后str= ( str = reg.Replace(str, "$1"))
跳出循环
str = reg.Replace(str, "$1") 中的 $1表示什么呢?系统如何认识 $1?
void Main()
{
string str = "8912341253789";Regex reg = new Regex(@"(\d)(\d*)\1");while (str != (str = reg.Replace(str, "$1$2"))) {} Console.WriteLine("Result:"+str);
}以上边代码为例:
\1 即$1 指 8
$2指 : 9123412537