小木偶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日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。