给txt文件里所有的数字前后插入|符号,  我用regex.replace只能做到把匹配的数字替换掉,不能在匹配的数字前后加|。小弟的基础很差,没有系统学C#的,只是需要用什么就看什么,希望各位大侠可以给详细点的代码,谢谢

解决方案 »

  1.   

    string test = Regex.Replace("abc1def2ghijk34mn", @"(?is)(?<=\d)|(?=\d)", "|");
      

  2.   


                string source = "abc1def2ghijk34mn";
                Regex reg = new Regex(@"(?is)([\d]+)");
                source = reg.Replace(source, @",$1,");
    //source = "abc,1,def,2,ghijk,34,mn"
      

  3.   

    自己看书1天不如上CSDN一问,问题马上解决。还想问一下2位高手分别一个问题,1楼的兄弟如果数字是连续的应该怎样改,例如要"|34|"的效果,\d加上+号没有效果。
    2楼版主如果replace不加@号应该怎样写。感谢2位帮忙,先结贴,分数各半
      

  4.   

    首先说下我的方法没有2楼简洁  建议用2楼的
    先回答你的问题  要连续的话我1楼的做法这样修改
    string test = Regex.Replace("abc1def2ghijk34mn", @"(?is)(?=[^\d])(?<=\d)|(?=\d)(?<=[^\d])", "|");2楼不加@的话 正则表达式里的特殊字符就要自己用斜杠转义了  为什么不用@呢
    这是不加@的情况
    string source = "abc1def2ghijk34mn";
    Regex reg = new Regex("(?is)([\\d]+)");
    source = reg.Replace(source, ",$1,");
      

  5.   

    结帖也可以回复,只不过关注的人就不多了@的作用是忽略转义,不加@的写法
    Regex reg = new Regex("\\d+");
    string result = reg.Replace(yourStr, @"|$0|");PS:上面用到的(?is)在这里是不需要的
      

  6.   

    (?i)可以不要  (?s)的话还要看你具体情况了  如果有数字之间换行符是否算连续 如果是那就要加上(?s)  如果不算就不要加了 顺便膜拜下过客先
      

  7.   

    string msg = "hello12fdsa3jkfdsf432324sdfdsafds";
                msg = Regex.Replace(msg, @"(\d+)", ",$1,");
                Console.WriteLine(msg);
                Console.ReadKey();