小木偶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 请问各位,如何在Jetson nano主控板的Ubuntu系统中安装PyQt5
  • ¥15 MAC安装佳能LBP2900驱动的网盘提取码
  • ¥400 微信停车小程序谁懂的来
  • ¥15 ATAC测序到底用什么peak文件做Diffbind差异分析
  • ¥15 安装ubantu过程中第一个vfat 文件挂载失败
  • ¥20 GZ::CTF如何兼容一些靶机?
  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥150 求 《小魔指》街机游戏机整合模拟软件