正则表达式:字符串替换

  • 将两个#之间的字符,替换成下划线加空格,要求原字符的长度应该和_ 的数量一致。
    private static void getUnderLine() {
        
        String str = "This is an #apple#. But I like #pears#.";
        Pattern regex = Pattern.compile("#.*?#");
        Matcher m = regex.matcher(str);

        StringBuffer resultString = new StringBuffer();
        while (m.find()) {
            String replacement = m.group(0).substring(1,m.group(0).length()-1).replaceAll(".", "_ ");
            m.appendReplacement(resultString, replacement);
        }
        m.appendTail(resultString);
        System.out.println(resultString.toString());
    }
  • 如果上面的示例,改为固定替换。
    private static void getUnderLine2() {
        String str = "This is an #apple#. But I like #pears#.";
        String reg = "#.*?#";
        str = str.replaceAll(reg, "____");
        System.out.println(str);
    }

正则表达式:字符串替换_第1张图片

  • 删除字符串中,非汉字部分。汉字的Unicode编码范围是:\u4e00-\u9fa5
    private static void deleteOtherChar() {
        String input = "神探狄仁&*%$杰之四大天王@bdfbdbdfdgds23532";
        String reg = "[^\\u4e00-\\u9fa5]";
        input = input.replaceAll(reg, "");
        System.out.println(input);   // 神探狄仁杰之四大天王
    }

参考:Java正则表达式之分组和替换

你可能感兴趣的:(java基础)