我已经实现了部分功能,但是有一些特殊的编号没办法处理,
方法接受两个参数1.(字符串类型)编号,参数2.(字符串类型)分隔符
假如用户输入参数1为A01~99
,参数2为~
,希望输出结果为[A01,A02,A03...A98,A99]
的集合,这个功能已经实现,但是如果用户输入A01~100
、A01A~100A
这样的编号我就不会处理了
方法接受两个参数1.(集合类型)编号,参数2.(字符串类型)分隔符
假如用户输入参数1[A01A,A02A,A03A...A98A,A99A,A100A]
,参数2为~
,希望得到结果为A01A~100A
,这个方法我不会实现
有一处需要补充,
编号可能为A00啊-01A~100A
期望得到结果为[A00啊-01A,A00啊-02A,A00啊-03A...A00啊-99A,A00啊-100A]
编号可能为A00啊-1A~100A
期望得到结果为[A00啊-1A,A00啊-2A,A00啊-3A...A00啊-99A,A00啊-100A]
package com.eleven;
import java.util.ArrayList;
import java.util.List;
public class ElevenTest {
public static void main(String[] args) {
List<String> list = splitMethod("A01B~100B", "~");
System.out.println(list);
String str = mergeMethod(list, "~");
System.out.println(str);
}
public static List<String> splitMethod(String str,String splitStr){
List<String> list = new ArrayList<>();
String firstChar = str.charAt(0) + "";
char lastChar = str.charAt(str.length() - 1);
str = str.replaceFirst(firstChar, "");
String[] split = str.split(splitStr);
for(int i = getNumByStr(split[0]); i <= getNumByStr(split[1]);i++){
list.add(new StringBuilder()
.append(firstChar)
.append(i < 10 ? "0" + i : i)
.append(isNum(lastChar) ? "" : lastChar)
.toString());
}
return list;
}
private static boolean isNum(char lastChar){
return lastChar >= '0' && lastChar <= '9';
}
private static Integer getNumByStr(String str){
return Integer.parseInt(str.replaceAll("[^0-9]", ""));
}
public static String mergeMethod(List<String> list,String splitStr){
String first = list.get(0);
String last = list.get(list.size() - 1);
String firstChar = first.charAt(0) + "";
return new StringBuilder()
.append(firstChar)
.append(first.replaceFirst(firstChar, ""))
.append(splitStr)
.append(last.replaceFirst(firstChar,""))
.toString();
}
}