引言:
最近做一个很简单昵称不允许有空字符串和屏蔽字的功能,却发现有很多坑。今天先说一个简单的字符串替换空字符串坑(主要是说如何去除全角空格,及去空字符,如tab,换行等。)。下次有时间,来说屏蔽词的坑。
正文:
一开始的想得很简单,加上策划也没有说清楚,然后又忙,就没有细想。
就直接
if(nick == null || nick.trim().equals("")){ return false; }
后来策划说,中间也不能有空字符,然后就又改成
if(nick == null || nick.indexOf(" ") >= 0){ return false }
然后测试的时候,策划结果说全角空格,tab这些也可以。
最后版本
public static void delBlank(String str){ return str.replaceAll("[ *| *| *|\\s*]*", ""); }
public static boolean canUse(String nick){ if(nick == null){ return false; } String temp = delBlank(nick); if(temp.equals("")){ return false; } }
str.replaceAll("[ *| *| *|\\s*]*", ""); 是替换字符串所有空字符串(),如果只想替换前后的话,则如下: s.replaceAll("^[ *| *| *|\\s*]*", "").replaceAll("[ *| *| *|\\s*]*$", "");
其中注意点,正则表达中
\s,任意空白符,
1.半角空格( )
2.水平制表符(\t)
3.竖直制表符
4.回车(\r)
5.换行(\n)
6.换页符(\f)
*********网上大部分资料说,不能匹配全角空格,经测试(JDK 8)可以!!!
找到参与资料:(http://www.runoob.com/regexp/regexp-syntax.html)
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
阿里云大力度优惠.云服务器最低可以两折起。也很多优惠券。具体【点击优惠进行详细了解。】