解决Java中使用“.“和“|“作为分隔符分割字符串无法拆分的问题

前言

今天项目中遇到一个问题,使用了“|”作为分隔符去拆分前端传过来的字符串,预期的是按照“|”分割可以获取到每个单词的内容,结果却拆分成了一个个的英文字母,后想想如果换成汉字是不是可以呢?

结果,是我们可能预想到的,也是每个汉字单独成了结果。

分析问题

这种情况也就是没有实现拆分的目的。

“|”在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练习生》

猜你喜欢

转载自blog.csdn.net/ybb_ymm/article/details/131568657