若一个字符串存在\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();
}
}
移除特殊符号的时候,可以使用正则表达式,但是也要注意,不要把正常的空格符给移除。
网友评论