当有一长串的字符串为使其更多的符合筛选条件,我们需要对其进行重新的组合和排序。
public class test1 {
public static void main(String[] args) throws ParseException {
String dipCodeLocal = "A:C+D+E+F";
String dipCodeOprn = "";
String dipCodeDiag = "";
String[] arraysOprn = null;
List<String> snList = null;
dipCodeDiag = dipCodeLocal.substring(0, dipCodeLocal.indexOf(":"));
//需要截取的位置为:后的数据
dipCodeOprn = dipCodeLocal.substring(dipCodeLocal.indexOf(":") + 1);
//按+进为多个数组
arraysOprn = (dipCodeOprn).split("\\+");
snList= Arrays.asList(arraysOprn);
//获取数组的总长度
int lenthOprn = snList.size();
for (int i = lenthOprn ; i <= lenthOprn && i >0 ;i--){
int[] splitResult = new int[i];
//遍历执行(原数组的长度,目标数组的长度,要输出的数组,原数组,固定长度)
getSplitResult(lenthOprn,i,splitResult,arraysOprn,i);
}
}
static void getSplitResult(int oldL,int newL,int[] splitResult,String[] arraysOprn,int finalNewL){
int i,j;
for(i=newL;i<=oldL;i++) {
splitResult[newL-1] = i-1;
if(newL>1) {
getSplitResult(i - 1, newL - 1,splitResult,arraysOprn,finalNewL);
}
else {
for(j=0;j<= finalNewL -1;j++) {
System.out.print(arraysOprn[splitResult[j]] + " ");
}
System.out.println();
}
}
}
}
执行后可得:C D E F
C D E
C D F
C E F
D E F
C D
C E
C F
D E
D F
E F
C
D
E
F