小木偶MO 2021-07-26 10:08 采纳率: 75%
浏览 30
已结题

编号合并和拆解工具类?

我已经实现了部分功能,但是有一些特殊的编号没办法处理,

1.编号拆解

方法接受两个参数1.(字符串类型)编号,参数2.(字符串类型)分隔符
假如用户输入参数1 A01~99参数2 ~,希望输出结果为 [A01,A02,A03...A98,A99]的集合,这个功能已经实现,但是如果用户输入A01~100A01A~100A这样的编号我就不会处理了

2.编号合并

方法接受两个参数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]

  • 写回答

1条回答 默认 最新

  • 是赵敢敢啊 2021-07-26 10:51
    关注
    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();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 修改了问题 7月26日
  • 创建了问题 7月26日

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?