数组总长度已知,
第 3 个与最后一个中间的数组为动态
在将数组全部输出的前提下,需要得出中间的数组有几组
个人觉得,不算数组下标的前两个 [0]和[1],将第3个作为第一个,不算数组的最后一个,可以拿到中间的数组,
下面是一个 Test 类
package com.org.tjkmes.basicproduct.entity;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SZ_Test {
@SuppressWarnings("unused")
public static void main(String[] args) {
String bufferzj[][] = new String[100][100];
bufferzj = getChartdtlsSplitBZWPzj();//纵筋描述
}
@SuppressWarnings("unchecked")
private static String[][] getChartdtlsSplitBZWPzj() {
//String value = basicproduct.getZongremark();
String value = "8:200+100*6+200*2+300*3+400*4+200";
//此时 长度为 11
/*
【 去掉前2组后 100*6 为 1组 200*2 为第 2组,
需要计算出 中间的动态值 一共有几组
value 中 100*6+200*2+300*3+400*4 为动态的,现在为 4 组
如 :
String value = "8:200+ 100*6+200*2+300*3 +200" ,
现在为 3 组
】
*/
//【1.】首先以数字进行分割
String regex = "[a-z]+|\\d+";//"[a-z]"匹配"a"到"z"范围
内的任何小写字母 ; \\d+ 匹配所有数字
Pattern pattern =Pattern.compile(regex);
@SuppressWarnings("rawtypes")
List list=new ArrayList();
Matcher matcher = pattern.matcher(value);
while(matcher.find()){
list.add(matcher.group().toString());//获取总长度
}
// 初始化一个二维字符串数组,只指定了行数
int intlistsize = list.size();//11
System.out.println("1.总长度为 : " +intlistsize);
int countnum = intlistsize %intlistsize == 0 ? intlistsize /intlistsize : intlistsize /intlistsize + 1;
//【2. 对数组进行分组】
// 格式为
String[][] arr = new String[countnum][intlistsize];//[1][数组长度]
for (int i = 0; i < countnum; i++) {//1组
if (i*2 + 0<intlistsize) {
arr[i][0] = (String) list.get(i*intlistsize + 0);
//纵筋直径
}
if (i*2 + 1<intlistsize) {
arr[i][1] = (String) list.get(i*intlistsize + 1);//纵筋抽头
}
/** -------这里为动态的-----start--------- */
/*
8:200+ 【 100*6+200*2+300*3+400*4 】 +200
【 】内为 动态
100*6 为第 1组 , 200*2为第 2组, 300*3 为第 3组,....
*/
if (i*2 + 2<intlistsize) {
arr[i][2] = (String) list.get(i*5 + 2);//横筋间隔
}
if (i*2 + 3<intlistsize) {
arr[i][3] = (String) list.get(i*5 + 3);//数量
}
// . //横泾间隔 n
// . //数量 n
// .
// .
System.out.println("2.组数为 : " );
/** -------这里为动态的-----end---------- */
//最后一组(动态)
if (i*2 + 10<intlistsize) {
arr[i][10] = (String) list.get(i*intlistsize + 10);//纵筋留尾 【最后一组】
}
}
return arr;
// 8:200+100*6+200*2+300*3+400*4+200
// arr 格式为 [[8, 200, 100, 6, 200, 2, 300, 3, 400, 4, 200]]
}
}