split分割函数以及cookie的name和value其特殊字符问题

javaweb中split分割函数输出报错java.util.regex.PatternSyntaxException Dangling meta character ‘*’ near index 0解决办法及cookie里面的value若有特殊字符报错的解决办法

String[] message=mid.split("\\*");
out.println("您的用户名为:"+message[0]+"
"
); out.println("您上次登陆时间为:"+message[1]+"
"
); out.println("您本次登陆时间为"+time+"
"
);

原代码是为了使用cookie记录登录用户及时间信息,在写代码过程中发现用split分割字符后输出不了以及cookie的value值是乱码。
查阅了资料发现,Cookie对象的name和value属性中不可以包含一些特殊字符,包括包括(分号(;)、逗号(,)、等号(=)以及空格等。如果value中包含则程序无法编译
[ ] ( ) = , " / ? @ : ;
其解决方法为:使用URLEncoder的encode方法编码,使用时使用URLDecoder的decode方法解码.

String mid=URLDecoder.decode(cookies[i].getValue(), "UTF-8");
cookies[i].setValue(URLEncoder.encode(message[0]+"*"+time+"*"+message[2], "UTF-8"));

而对于split函数来言,像+、*、|、\、?、^等符号在正则表达式中有相应的不同意义,不同于其他的字符,不能直接作为切分符号。
解决方法:一般来讲只需要加[]、或是\\即可

String[] message=mid.split("\\*");
String[] message=mid.split("[*]");

你可能感兴趣的:(java,cookie,字符串,正则表达式)