String str = "hi'dmh 100% a_b= 100\200";
我需要替换后的结果是:
str = "hi\'dmh 100\% a\_b= 100\\200";
我用下面这个,它把hi'dmh 替换成了hi\\'dmh 而不是我想要的 hi\'dmhstr = str.replaceAll("'","\\\\'");我最后要得到的打印结果应该是:hi\'dmh 100\% a\_b= 100\\200' 替换成\'
% 替换成\%
_ 替换成\_
\ 替换成 \\各位帮我一下吧

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【7xin】截止到2008-07-05 15:29:51的历史汇总数据(不包括此帖):
    发帖的总数量:15                       发帖的总分数:800                      
    结贴的总数量:13                       结贴的总分数:780                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:20                       
    结贴的百分比:86.67 %               结分的百分比:97.50 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   


            String str = "hi'dmh 100% a_b= 100\\200";
            String regex = "\'|%|_|\\\\";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            StringBuffer sb = new StringBuffer("");        while(m.find())
            {
                int start = m.start();
                int end = m.end();
                String temp = str.substring(start, end);            if(temp.equals("\'") || temp.equals("\\"))
                {
                    temp = "\\" + temp;
                }            m.appendReplacement(sb, "\\\\" + temp);
            }        m.appendTail(sb);
            
            //最终结果
            String ret = sb.toString();
            System.out.println(ret);
      

  3.   

    这好比要把:String str = "\u4e00"; 中的 \ 换成 \\ 一样,实际上这里没有 \,在编译时就处理成了一个字符。
    而替换操作是在运行期间做的,所以这里的 \ 已经没有了。\ 在 Java 中是特殊字符,其本身并不表示“\”!
      

  4.   

    String str = "hi'dmh 100% a_b= 100\200";假如:hi'dmh 100% a_b= 100\200 这个是字符串的值,而不是 Java 代码中的意思的话。在 Java 中应该改为String str = "hi'dmh 100% a_b= 100\\200";public class Test {
        public static void main(String[] args) {
            String str = "hi'dmh 100% a_b= 100\\200";
            System.out.println("Old: " + str);
            String regex = "(?=['%_\\\\])";
            str = str.replaceAll(regex, "\\\\");
            System.out.println("New: " + str);
        }
    }输出结果:Old: hi'dmh 100% a_b= 100\200
    New: hi\'dmh 100\% a\_b= 100\\200
      

  5.   

    "hi'dmh 100% a_b= 100\\200".replaceAll("(['%_\\\\])", "\\\\$1")
      

  6.   

    String str = @"hi'dmh 100% a_b= 100\200";
    str = Regex.Replace(str,@"([^a-zA-Z0-9 =]+)",@"\$1");完全符合楼主要求
      

  7.   


    抱歉,不知不觉写成.net的东西了String str = "hi'dmh 100% a_b= 100\200";str = str.replaceAll("([^a-zA-Z0-9 =])","\\\\$1");