有一个字符串string StringInsert="Hi:\r\nThis is James!\nNice to meet you!\n\nThanks."我想把所有'\n'替换成‘\r\n’,但是如果\n前面已经有了\r的话,就不必重复替换了。也就成最终我想要的字符串应该是:
"Hi:\r\nThis is James!\r\nNice to meet you!\r\n\r\nThanks."我用了一下代码,好像不对!
string rstr = "[\r]{0}[\n]{1}";
Regex r = new Regex(rstr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
if (r.IsMatch(StringInsert))
     StringInsert=r.Replace(StringInsert,"\r\n"); 
请问,正确的匹配条件应该如何写?
谢谢!

解决方案 »

  1.   

    to Macosx(咋就不结贴呢):你是说 [^r]\\n 不行?
      

  2.   

    string StringInsert = "Hi:\r\nThis is James!\nNice to meet you!\n\nThanks.";            string rstr = "(?<!\\r)\\n";
                Regex r = new Regex(rstr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
                if (r.IsMatch(StringInsert))
                {
                    StringInsert = r.Replace(StringInsert, "\r\n");
                }
      

  3.   

    其实只要这样就可以了StringInsert = Regex.Replace(StringInsert, "(?<!\r)\n", "\r\n");IgnoreCase 这个参数不用加,因为你的正则里没有涉及到字母,也就无所谓大小写
    Compiled 这相参数也不必加,除非你是频繁的调用这一方法,当然,如果是那样的话,就要用实例化方法,而不是我写的这种静态方法了
      

  4.   

    谢谢大家!在问个问题,除了用正则,.net中有没有专门的方法函数,可以将字符串中不规则的回车符(\n)替换成规则的回车符(\r\n)
    ?我这样做的目的是为了可以将回车换行正常显示在Textbox中,大家有没有注意到Textbox中不认‘\n’的,它只认'\r\n'.再次谢谢!
      

  5.   

    string yourStr = "Hi:\r\nThis is James!\nNice to meet you!\n\nThanks.";
    yourStr.Replace("\r\n","\n");
    yourStr.Replace("\n","\r\n");