package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class zifuchuanshaixuanshuzizifuduan {
public static void main(String[] args) {
String str = "上传失败!:存在码:8348450470309528211,-1,2.5,-1.8,454aa,hjafj,@,粉红色,83748450309528210,89528212,164,64,654,684684共X个码;";
// 方法1(findNumericFields)示例,可筛选非数字串
int beg = str.indexOf("码:");
int end = str.indexOf("共");
String substring1 = str.substring(beg+2,end);
List<String> result = findNumericFields(substring1);
System.out.println(result); // 输出: [8348450470309528211, -1, 2.5, -1.8, 83748450309528210, 89528212, 164, 64, 654, 684684]
// 方法2(stream)示例,不可筛选非数字串
List<String> result1=Arrays.stream(str.substring(str.indexOf("码:")+2, str.indexOf("共")).split(",")).collect(Collectors.toList());
System.out.println(result1);// 输出: [8348450470309528211, -1, 2.5, -1.8, 454aa, hjafj, @, 粉红色, 83748450309528210, 89528212, 164, 64, 654, 684684]
}
public static List<String> findNumericFields(String input) {
String[] fields = input.split(",");
List<String> numericFields = new ArrayList<>();
for (String field : fields) {
if (field.matches("\\d+")) { // 正则表达式匹配整数或浮点数(去掉非数字字符)
numericFields.add(field);
} else if (field.matches("-?\\d+(\\.\\d+)?")) { // 匹配负数或带小数点的数
numericFields.add(field);
}
}
return numericFields;
}
}