[JAVA基础篇22]—去掉字符串中的回车、换行、制表符

2020-10-13  本文已影响0人  小胖学编程

若一个字符串存在\n(换行)\r(回车)\t(制表)符。那么即使相同内容的字符串(不含特殊符号),他们的equals方法也会不同。这就要求我们移除这些特殊符号。


/**
 * 测试移除代码中的换行符
 */
public class TestReturn {

    public static void main(String[] args) {
        String s1 = "i am china\n\r";
        String s2 = "i am china";

        //移除

        Info info1 = new Info();
        info1.setName(removeRNT(s1)+"a");
        Info info2 = new Info();
        info2.setName(s2+"a");
        System.out.println(info1.getName());
        System.out.println(info2.getName());

        System.out.println(info1.getName().equals(info2.getName()));
    }


    @Data
    public static class Info {
        private String name;
    }


    /**
     * 在正则表达式中\s表示所有的空格:    匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
     * 使用正则表达式,移除换行符(且不移除空格)
     *
     * @param originalStr 原始字符串
     * @return 移除换行\r、回车\n、制表\t符的字符串
     */
    public static String removeRNT(String originalStr) {
        if (originalStr == null || originalStr.isEmpty()) {
            return originalStr;
        }
        return originalStr.replaceAll("[\t\n\r]","");
    }

    /**
     * 移除字符串中所有的空白格(包含换行\r、回车\n、制表\t符)
     *
     * @param str 原始串
     * @return 无空格后的串
     */
    public static String trimAllWhitespace(String str) {
        if (str == null || str.isEmpty()) {
            return str;
        }
        int len = str.length();
        StringBuilder sb = new StringBuilder(str.length());
        for (int i = 0; i < len; i++) {
            char c = str.charAt(i);
            if (!Character.isWhitespace(c)) {
                sb.append(c);
            }
        }
        return sb.toString();
    }

}

移除特殊符号的时候,可以使用正则表达式,但是也要注意,不要把正常的空格符给移除。

上一篇下一篇

猜你喜欢

热点阅读