使用java流式API【 下划线转驼峰】和【驼峰转下划线】

使用java流式API【 下划线转驼峰】和【驼峰转下划线】

  • 使用java流式API【 下划线转驼峰】和【驼峰转下划线】
    • 下划线转驼峰
    • 驼峰转下划线
    • 测试

使用java流式API【 下划线转驼峰】和【驼峰转下划线】

下划线转驼峰

  /**
     * 下划线转驼峰
     * @param str
     */
    public static String  underscoreToCamelCase(String str){
        Objects.requireNonNull(str,"str参数不能为空!");
        String result = Arrays.stream(str.split("_")).map(word -> StringUtils.capitalize(word.toLowerCase())).collect(Collectors.joining());
        return StringUtils.uncapitalize(result);
    }

驼峰转下划线

 /**
     * 驼峰转下划线
     * @param str
     */
    public static String camelCaseToUnderscore(String str) {
        Objects.requireNonNull(str,"str参数不能为空!");
        // 将驼峰式命名的字符串分割成字符数组
        char[] chars = str.toCharArray();
        // 使用Java 8流处理:找出非首字母的大写字母位置
        List<Integer> upperCaseIndexList = IntStream.range(0, chars.length).filter(i -> i > 0 && Character.isUpperCase(chars[i])).boxed().collect(Collectors.toList());
        // 根据大写字母的位置插入下划线,并将下划线转为小写
        String result = IntStream.range(0, chars.length)
                .mapToObj(i -> (i > 0 && upperCaseIndexList.stream().anyMatch(index -> index.intValue() == i))?"_" + Character.toLowerCase(chars[i]):Character.toString(chars[i]) )
                .collect(Collectors.joining());
        //将首字母转为小写
        return StringUtils.uncapitalize(result);
    }

测试

  public static void main(String[] args) {
        //不足两位左边添0
        for (int i = 1; i <=10; i++) {
            String s = StringUtils.leftPad(i+"", 2, "0");
            System.out.println(s);
        }
        //隐藏手机号中间4位
        System.out.println(StringUtils.replace("15914305028",StringUtils.mid("15914305028", 3, 4),"****"));
        System.out.println(StringUtils.replace("15914305028",StringUtils.substring("15914305028",3,7),"****"));
        //overlay 覆盖的意思
        System.out.println(StringUtils.overlay("15914305028", "****", 3, 7));

        System.out.println(camelCaseToUnderscore("CamelCaseToUnderscore"));
    }

你可能感兴趣的:(java,下划线转驼峰,驼峰转下划线)