1.业务是给T65ABCA,78DEFD,利用split(",")拆分成T65ABCA和78DEFD,单独分别并合并。第一个分解合并并且去重变成T65A,T65B,T65C,第二个分解合并并且去重变成78D,78E,78F.
2.代码
public class ModelTest {
@Test
public void test() {
String str = "T42KBCK,32ABCA";
String str1 = "56BFGB";
String[] arr = str.split(",");
String seatNum;
String letter;
StringBuilder lastStr = new StringBuilder();
if (arr.length > 0) {
for (int i = 0; i < arr.length; i++) {
String regEx = "\\D";\
Pattern p = Pattern.compile(regEx );
Matcher m = p.matcher(arr[i]);
String result = m.replaceAll("").trim();
int length = result.length();
Character ch = result.charAt(0);
int index = arr[i].indexOf(ch);
seatNum = arr[i].subString(0,index+length);
letter = arr[i].subString(index+length,arr[i].length());
lastStr.append(merge(seatNum, letter));
}
}
//去掉最后的逗号
String result = lastStr.substring(0,lastStr.length()-1);
System.out.println("最后的结果:"+result);
}
/**
* merge(合并的方法)
* @param seatNum
* @param ss
*/
private String merge(String seatNum, String letter) {
//去掉重复的字母
String handleStr = letter.replaceAll("(.)(?=.*\\1)", "");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < handleStr.length(); i++) {
String subStr = handleStr.substring(i, i + 1);
builder.append(seatNum).append(subStr).append(",");
}
return builder.toString();
}
}
第二种
@Test
public void testModeContext() {
String str = "T42KBCK,32ABCA";
String str1 = "56BFGB";
String[] arrVal = str1.split(",");
String seatNum;
String letter;
StringBuilder lastStr = new StringBuilder();
if (arrVal.length > 0) {
for (int i = 0; i < arrVal.length; i++) {
//判断首字符是字母还是数字
String firstStr = arrVal[i].substring(0, 1);
String arr = arrVal[i].trim();
Matcher matcher = Pattern.compile("[0-9]").matcher(arr);
if (matcher.find()){
seatNum = arr.substring(0, matcher.end()+1);
letter = arr.substring(matcher.end()+1, arr.length());
lastStr.append(merge(seatNum,letter));
}
}
}
//去掉最后的逗号
String result = lastStr.substring(0,lastStr.length()-1);
System.out.println("最后的结果:"+result);
}
/**
* merge(这里用一句话描述这个方法的作用)
* @param seatNum
* @param ss
*/
private String merge(String seatNum, String letter) {
//去掉重复的字母
String handleStr = letter.replaceAll("(.)(?=.*\\1)", "");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < handleStr.length(); i++) {
String subStr = handleStr.substring(i, i + 1);
builder.append(seatNum).append(subStr).append(",");
}
return builder.toString();
}