我是靠谱客的博主 精明豆芽,最近开发中收集的这篇文章主要介绍string 字符串转换数组 mybatis 使用数组批量查询 逗号分割字符串为数组 只允许空格逗号数字 可以是数字字母逗号 如何批量查询,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
String字符串转换数组
直接上一个完整的字符串切割业务代码吧
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Test04 {
public static void main(String[] args) {
// 请求的参数
String str = "
,,, , , ,
, , ,
, , , 99
99,999,999,,,,,,,8888888,,,,,
,,,,,
,";
// 要求数组纯 int 类型
boolean b = new Test04().reqParamIsNumber("");
if(!b) {
// 需要怎么处理看你的业务需求
System.out.println("您输入的不是数字类型,请检查输入参数");
}
// 转换的三个方法,具体功能看文档注释即可
//
List<String>
collect= new Test04().parseReqParamToArrayUseOriginal(str);
List<String>
collect= new Test04().parseReqParamToArrayUseTrim(str);
//
List<String>
collect= new Test04().parseReqParamToArrayUseTrimAll(str);
// 字符串不为空->查询
if(!collect.isEmpty()) {
System.out.println(collect);
}else {
System.out.println("is null");
}
}
/**
* 请求参数是Number类型
* @param str
* @return
*/
private boolean reqParamIsNumber(String str){
if(str.length()==0)
return true;
// 数字 空格 逗号
String regex = "(\d|,|,|\s)+";
boolean b = Pattern.matches(regex, str);
return b;
}
/**
* 将请求参数解析为数组
* 方案一:不处理用户输入的各种空格,只做原始分割。
*
转换前:" C888 ,AAAAA , , AGA A , , , , , , A-GA-EGA GA G ,,"
*
转换后:[ C888 , AAAAA ,
,
AGA A ,
A-GA-EGA GA G ]
* @param str
* @return
*/
private List<String> parseReqParamToArrayUseOriginal(String str) {
List<String> collect = new ArrayList<>();
if(str == null || str.length() == 0 || ("").equals(str.trim())) {
return collect;
}
String regex = ",|,";
String[] strAry = str.split(regex);
collect = Arrays.asList(strAry).stream().filter(param -> !("").equals(param)).distinct()
.collect(Collectors.toList());
return collect;
}
/**
* 方案:只处理每个分割字符的两边空格, 中间空格不管。 考虑操作员在输入时候,在两端多了空格的问题
*
转换前:" 11 1 , 2 22
,333 444 555 ,111,222,111,222";
*
转换后:[11 1, 22 2, 333 444 555, 111]
* @return
*/
private List<String> parseReqParamToArrayUseTrim(String str) {
List<String> collect = new ArrayList<>();
if(str == null || str.length() == 0 || ("").equals(str.trim())) {
return collect;
}
StringBuilder strbd = new StringBuilder();
String regex = ",|,";
String[] strAry = str.split(regex);
// 过滤掉每个字符串两边的空格,例如: "111,
2 22 ,
3333
" -> "111,2 22,333"。不过滤中间的空格
Arrays.asList(strAry).stream().forEach(item -> strbd.append(item.trim() + ","));
// 重新处理为List<String>
collect = Arrays.asList(strbd.toString().split(",")).stream().filter(param -> !("").equals(param)).distinct()
.collect(Collectors.toList());
return collect;
}
/**
* 方案:一律过滤掉所有的空格,每个字符串元素前后、中间的空格,此种方式可能影响到操作员输入的字符本身需要带空格,而你却去除了,影响最终的查询结果。
*
转换前:" C888 ,AAA , , AGA A , , , , , , A-GA-EGA GA G ,"
*
转换后:[C888, AAA, AGAA, A-GA-EGAGAG]
* @param str
* @return
*/
private List<String> parseReqParamToArrayUseTrimAll(String str) {
List<String> collect = new ArrayList<>();
if(str == null || str.length() == 0 || ("").equals(str.trim())) {
return collect;
}
String regex = ",|,";
String[] strAry = str.replaceAll("(?:\[|null|\]| +)", "").split(regex);
collect = Arrays.asList(strAry).stream().filter(param -> !("").equals(param)).distinct()
.collect(Collectors.toList());
return collect;
}
}
最后
以上就是精明豆芽为你收集整理的string 字符串转换数组 mybatis 使用数组批量查询 逗号分割字符串为数组 只允许空格逗号数字 可以是数字字母逗号 如何批量查询的全部内容,希望文章能够帮你解决string 字符串转换数组 mybatis 使用数组批量查询 逗号分割字符串为数组 只允许空格逗号数字 可以是数字字母逗号 如何批量查询所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复