String ss1 = "aa\58bb"
希望经过转换为
String ss2 = "aa:bb"搜索'\'和'\\'是没有用的,怎么办呢??

解决方案 »

  1.   

    如果你只是替换的话      String ss1 = "aa\58bb";
            System.out.println(ss1.replace("\58",":"));
      

  2.   

    String src = "aa\58bb2345seiljlvc#*(&)sjkdlf;a*(&)#dfae8932";
    String desc = src.replaceAll("[^a-zA-Z]+", ":");         System.out.println("'" + src + "'");
             System.out.println("'" + desc + "'");
      

  3.   

    楼上的这个不错,不过还没达到我的目的,
    我举\58只是一个例子,还有其他ASCII码,我的要求是src = "aa\58bb\44cc"
    转化为:
    dest = "aa:58,cc"
      

  4.   

    try {
             String strpattern = "\\\\([0-9]{1,3})";
         String src = "aa\\58bb234\\40\\47aaa";
         String desc = "";         Pattern p = Pattern.compile(strpattern);
                String[] ss = p.split(src);
                int num = ss.length;
                String[] asc = new String[num];
             Matcher m = p.matcher(src);
             int i = 1;
             while(m.find()) {
             asc[i] = dec2asc(m.group(1));
             i++;
             }            for (i=0; i<num; i++) {
                 if (i==0) {
                 desc += ss[i];
                 } else {
                 desc += asc[i] + ss[i];
                 }
                }            System.out.println("'" + src + "'");
             System.out.println("'" + desc + "'");
            }
            catch(Exception exception)
            {
                exception.printStackTrace();
            } static String dec2asc(String dec) {
    String result = "";
    try {
    int d = Integer.parseInt(dec);
    char c = (char)(d & 255);
    result += c;
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            return result;
    }
      

  5.   

    注意这里:
    String src = "aa\\58bb234\\40\\47aaa";
                    ^^       ^^  ^^
                    原字符串里面的\必须再加上一个\,否则就成转意符了。
      

  6.   

    多谢poplar兄,
    可是我现在的情况是从设备上取回的信息就是
    String src = "aa\58bb234\40\47aaa";郁闷啊
      

  7.   

    那你就不要用String,char[]或int[]
    可以用循环转成String,然后用上面的方法转换
    或者直接在char或int数组循环取出相应的ascii数值,直接转换,见上面的dec2asc程序。
      

  8.   

    public static void main(String[] args) {        try {
             String strpattern = "\\\\([0-9]{1,3})";
         String src = "aa\\58bb234\\40\\47aaa";
         byte[] cs = src.getBytes(); //这里跟你拿到的串一样
         src = "";
         for (int i=0; i<cs.length; i++) {
         if (cs[i] == '\\') {
         src += "\\";
         } else {
         src += (char)cs[i];
         }
         }
         String desc = "";
             Pattern p = Pattern.compile(strpattern);
                String[] ss = p.split(src);
                int num = ss.length;
                String[] asc = new String[num];
             Matcher m = p.matcher(src);
             int i = 1;
             while(m.find()) {
             asc[i] = dec2asc(m.group(1));
             i++;
             }            for (i=0; i<num; i++) {
                 if (i==0) {
                 desc += ss[i];
                 } else {
                 desc += asc[i] + ss[i];
                 }
                }            System.out.println("'" + src + "'");
             System.out.println("'" + desc + "'");
            }
            catch(Exception exception)
            {
                exception.printStackTrace();
            }
    }
    static String dec2asc(String dec) {
    String result = "";
    try {
    int d = Integer.parseInt(dec);
    char c = (char)(d & 255);
    result += c;
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            return result;
    }
    }
    如何?