前言
今天项目中遇到一个问题,使用了“|”作为分隔符去拆分前端传过来的字符串,预期的是按照“|”分割可以获取到每个单词的内容,结果却拆分成了一个个的英文字母,后想想如果换成汉字是不是可以呢?
结果,是我们可能预想到的,也是每个汉字单独成了结果。
分析问题
这种情况也就是没有实现拆分的目的。
“|”在java中是不是有特殊的含义,导致的拆分失败,试试了转义字符,将他转义一下。
具体实现如下:
User user = getUser(request);
ApiResult apiResult = new ApiResult();
String name = productBrandReq.getName();
if(StringUtils.isEmpty(name) || name.trim().endsWith(“|”)){
throw new ParamException(“请正确填写name,不能以:| 结尾”);
}
String[] names = name.split(“|”);
上面的代码拆分出来的names是按照单个字符进行拆分的。
将上面的最后一行代码替换成下面的代码即可完成,将“|”进行转义操作
String[] names = name.split("\\|");
| 的含义
|(或运算符)
| 是针对二进制的二目运算符。
运算规则:两个二进制数值如果在同一位上至少有一个1,则结果中该位为1,否则为0,比如1011 & 0010 = 1011。
以上就是我们在java中使用“|”进行拆分的时候就会遇到问题了。我们进行转义即可正常使用
扩展
接下来,我们来具体看一下java中的String的split()是如何使用的吧!!!
他是来自java.lang.String API下的方法,具体使用方法总结如下:
java字符串分割方法.split()的详细用法
1、按指定普通字符分割
java代码如下:
String string="123@456@789";
// 通过 @ 分割
String array[]=string.split("@");
for(String s:array)
System.out.println(s);
运行结果:
123
456
789
2、按所有半角符号分割(分割单词常用到)
java中有一个快速的单词关键分割代码(按符号分割):
string.split("[\\p{Punct}\\s]+");
java代码如下:
String string="aaa bbb,margin. hhh-kkk+love youe...";
String array[]=string.split("[\\p{Punct}\\s]+");
for(String s:array)
System.out.println(s);
运行结果:
aaa
bbb
margin
hhh
kkk
love
youe
3、按多个字符分割
如果一个字符串中包含了多个分隔符,用"|"作为连字符进行拆分。
java代码如下:
String string="aaa#bbb&ccc-ddd";
String array[]=string.split("#|&|-");
for(String s:array)
System.out.println(s);
运行结果:
aaa
bbb
ccc
ddd
4、按转义(特殊)字符分割
1.如果是" \ ",那么就得写成"\\\\"。 上"\\"。
2.字符" | " , " * " , " + "都得加上转义字符,前面加
java代码如下:
String string="123*456*789";
String array[]=string.split("\\*");
for(String s:array)
System.out.println(s);
运行结果:
123
456
789
总结
“|” 和 "."在
Java中有特殊的意义
在使用的时候需要进行转义操作,不然拆分的时候会出现问题,导致拆分不成功!
欢迎大家点击下方卡片,关注《coder练习生》