"AbcDefHis"怎么转换成"abc_def_his"?

解决方案 »

  1.   

    自己看看String的API 就可以搞定
      

  2.   

    "AbcDefHis".replaceAll("([A-Z])", "_$1").toLowerCase()
      

  3.   

    楼上的好像会在第一个字符前也加上"_",成为 "_abc_def_his",没实际测试过,目测的
      

  4.   

    huoyin(多情剑客)的答案的结果是"_abc_def_his",这样需要去掉最前的"_",可否利用正则表达式直接出来"abc_def_his"?
      

  5.   

    public class Csdn1
    {
    public static void main(String[] args)
    {
    String s = "AbcDefHis";
    //先将其转换为小写的
    String str = s.toLowerCase();
    StringBuffer sb = new StringBuffer(str);
    sb.insert(3,"_").insert(7,"_");
    System.out.println(sb.toString());
    }
    };
    我写的一个转换,不过比较死,只能转换这一个,呵呵
      

  6.   

    telloo() 个们,你的严重不行
      

  7.   

    public class Test 
    { public static String aa(String a)
    {
    String b = ""; char[] c = a.toCharArray();
    for(int i=0;i<c.length;i++)
    {
    if(Character.isUpperCase(c[i]))
    {
    if(i==0)
    b+=Character.toLowerCase(c[i]);
    else
    b = b+ "_"+Character.toLowerCase(c[i]);
    }
    else
    {
    b += c[i];
    }

    }
    return b;
    }

    public static void main(String[] args)
    {
    String a = "AbcDefHis";
    System.out.println(Test.aa(a));
    }
    }
      

  8.   

    str = str.replaceAll("(?<!\\b)([A-Z])", "_$1").toLowerCase();
    System.out.println(str);
      

  9.   

    str = str.replaceAll("(?<!\\b)(?=[A-Z])", "_").toLowerCase();
    System.out.println(str);
      

  10.   

    str = str.replaceAll("([^^])([A-Z])", "$1_$2").toLowerCase();
    System.out.println(str);
      

  11.   

    全是高手 学习! 不过谁解释一下 
    str = str.replaceAll("(?<!\\b)(?=[A-Z])", "_").toLowerCase();
      

  12.   

    反向预搜索+正向预搜索
    str.replaceAll("(?<!\\b)(?=[A-Z])", "_")其实就是找到插入"_"的位置,第一个反向预搜索确定前面不是分隔符,比如起始位置,第二个正向预搜索找到大写字母,在大写字母前面插入"_"
      

  13.   

    http://hi.baidu.com/fymzone/blog/item/22685a465c3d49086b63e5ac.html
    http://www.regexlab.com/zh/regref.htm
      

  14.   

    表达式中有“<”的表示匹配搜索串的后面的空隙,没有的“<”表示匹配搜索串前的空隙。
    带有“!”的表示不配匹字串,带有“=”的表示匹配字串。(?=[A-Z])  表示匹配 A-Z字母前的空隙。
    (?![A-Z])  表示匹配非A-Z字母前的空隙。
    (?<=[A-Z]) 表示匹配 A-Z字母后的空隙。
    (?<![A-Z]) 表示匹配非A-Z字母后的空隙。(?!\\b)或者(?<!\\b)表示同时匹配非行首或行尾的边界
      

  15.   

    经过测试 
    str  =  str.replaceAll(  "(?  <!\\b)([A-Z])  ",    "_$1  ").toLowerCase();  
    要比
    str  =  str.replaceAll(  "(?  <!\\b)(?=[A-Z])  ",    "_  ").toLowerCase();  
    效率高感谢:believefym(feng)
      

  16.   

    str = str.replaceAll("([^^])([A-Z])", "$1_$2").toLowerCase();这个效率比那两个还高。
      

  17.   

    经过测试
    str = str.replaceAll("([^^])([A-Z])", "$1_$2").toLowerCase();效率最高
    str  =  str.replaceAll(  "(?  <!\\b)([A-Z])  ",    "_$1  ").toLowerCase();  效率其次
    str  =  str.replaceAll(  "(?  <!\\b)(?=[A-Z])  ",    "_  ").toLowerCase();  效率最差