首先是一段java的正则代码,我要转换为.net的 /**
     * 在分隔符后加上回车
     * @param str
     * @param splitStr
     * @return
     */
    private static String getAddEnterStr(String str,String splitStr){
        Pattern p = Pattern.compile(splitStr,Pattern.CASE_INSENSITIVE);        // 用Pattern类的matcher()方法生成一个Matcher对象
        Matcher m = p.matcher(str);
        StringBuffer sb = new StringBuffer();        // 使用find()方法查找第一个匹配的对象
        boolean result = m.find();        // 使用循环找出模式匹配的内容替换之,再将内容加到sb里
        while (result) {
            m.appendReplacement(sb, m.group(0) + "\n     ");
            result = m.find();
        }
        // 最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;
        m.appendTail(sb);
        
        return FourSpace+sb.toString();
    }上面为java的下面为.net的 但是我只是写了一部分了,到了 java部分的appendReplacement 这个方法,死活搞不懂怎样转换为.net的语言,求大神帮忙啊!!!!!!!!  /**
         * 在分隔符后加上回车
         * @param str
         * @param splitStr
         * @return
         */
        private static string getAddEnterStr(string str, string splitStr)
        {
            Regex rx = new Regex(splitStr, RegexOptions.Compiled | RegexOptions.IgnoreCase);            Match matches = rx.Match(str);            StringBuilder sb = new StringBuilder();           // sb.Append(str);
            // 使用find()方法查找第一个匹配的对象
            Boolean result = matches.Success;            // 使用循环找出模式匹配的内容替换之,再将内容加到sb里
            while (result)
            {
                //这里究竟该怎样写呢? 反正下面写的这个是错误的
                matches.Value.(sb.ToString(), matches.Groups[0].Value + "\n     ");
                result = matches.Success;
            }
            // 最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;
            sb.Append(matches.Value);            return FourSpace + sb.ToString();
        }
正则表达式Java.NET对象

解决方案 »

  1.   


    Matcher appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。
     
    StringBuffer appendTail(StringBuffer sb)   将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。 
      

  2.   

     matches.Value.(sb.ToString(), matches.Groups[0].Value + "\n     "); 
    写错了
    我写的是    matches.Value.Replace(sb.ToString(), matches.Groups[0].Value + "\n     ");
    但是应该是错误的 
      

  3.   


    将匹配出来的所有数据进行加工 , 不是在原字符串的基础上加工 你可以使用MatchCollection类进行处理
    demo:   string txt = "1 and 2 and 3 and 4 and 5";
                //声明正则匹配类集合
                MatchCollection mcs = Regex.Matches(txt, "[0-9]+");
                foreach (Match item in mcs)
                {
                    if (item.Success)
                    {
                        //提取出来的字符串
                        Console.WriteLine(item.Groups[0].Value);
                    }
                }
                Console.Read();