Skip to content

String类应用


去重应用(结巴程序)

我...我要...学学学学...编程 java!

通过正则表达式去重,修改成:我要学编程 java

思路

去掉省略号

去掉重复的字

java
public class test {
    public static void main(String[] args) {
        String content = "我...我要...学学学学...编程 java!";
        Pattern pattern = Pattern.compile("\\.");
        Matcher matcher = pattern.matcher(content);

        // 去除省略号.
        String newContent1 = matcher.replaceAll("");

        // 利用反向引用去除重复的汉字
        pattern = Pattern.compile("(.)\\1+");
        matcher = pattern.matcher(newContent1);
        // 外部引用
        String newContent2 = matcher.replaceAll("$1");

        // 输出结果
        System.out.println(newContent2);
    }
}

$1 表示外部引用匹配的第一组(括号表示分组的意思)字串,用一个字( . )去替换匹配的含有重复字( . )\\1+的字串

一次替换多个字符

把如下文字片段中的 JDK1.3、JDK1.4 统一替换成 JDK

2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,
几周后其获得了 Apple 公司 Mac OS X 的工业标准的支持。
2001 年 9 月 24 日,J2EE1.3 发布。2002 年 2 月 26 日,
J2SE1.4 发布。自此 Java 的计算能力有了大幅提升

示例代码

java
public class test {
    public static void main(String[] args) {
        String content = "\n" +
                "2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布," +
                "几周后其获得了 Apple 公司 Mac OS X 的工业标准的支持" +
                "。2001 年 9 月 24 日,J2EE1.3 发布。" +
                "2002 年 2 月 26 日,J2SE1.4 发布。自此 Java 的计算能力有了大幅提升!";
        String newContent = content.replaceAll("JDK1\\.3|JDK1\\.4","JDK");
        System.out.println(newContent);
    }
}

分割字符串

content = "hello#abc-jack12smith~北京"

分割后的字符串:hello, abc, jack, smith, 北京

java
public class test {
    public static void main(String[] args) {
        String content = "hello#abc-jack12smith~北京";
        String[] newContent = content.split("#|-|~|\\d+");
        System.out.println(Arrays.toString(newContent));
    }
}

⭐ 检验文本是否是汉字

汉字的编码范围:0391-ffe5

java
public class test {
    public static void main(String[] args) {
        String content = "后端工程师";
        Pattern pattern = Pattern.compile("^[\u0391-\uffe5]+$");
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()){
            System.out.println("全部都是汉字");
        }else {
            System.out.println("有不是汉字的成分");
        }
    }
}

matches( )方法

验证手机号是否以 138 或者 139 开头

java
public class practise {
    public static void main(String[] args) {
        String content = "13888889999";
        if (content.matches("1(38|39)\\d{8}")){
            System.out.println("验证成功");
        }else {
            System.out.println("验证失败");
        }
    }
}