根据整型Id值长度,将定义的字符串转为目标值

    最近在2个功能已经差不多实现的系统中做接口交接系统,通过A系统传过来的参数,自己处理后对应到B系统所需参数,让B去实现功能最终返回结果。

1.由于双方在接口定义时没有怎么统一,所以在交接时候出现了,  实现编辑和删除时由于A系统发送的是整型Id 1 2 3 4 而B系统在具体实现新增时,自定义主键为36位guid类型的Id值:94f26f5c-ba83-4209-bd07-f5e8b01e11b5

2.刚开始双方协调都希望对方加个Id对应下,但是A由于已经按照接口联调了几家了,B的系统也已经有很多公司在使用了,并且由于我是只做参数转发,所以自己建库保存映射关系就失去了我的中间系统的意义,最后决定了在B上按照A给我的ID  我再补足36位转发给B实现,即B在新增时,主键Id由我根据A的ID补足36位生成。


废话那么多,其实就是想说明下需求背景   调用方 实现方 接口定义不统一害死人!!

下面来说下具体实现  其实很简单 就只是定义一个String类型36位变量,然后根据A系统传过来的Id长度 截取这个变量,再将A 的Id补上去,得到的就是满足需求的目标值了    主要使用到了String类的substring方法   然后还有replace replaceAll由于不知道到底是哪些字符被替换 所以replace 系列 方法不适用此需求

代码为:

/**
         * 得到补足36位的Id值
         *
         * @param str  36位变量
         * @return  返回经过补足的id类型
         */
        public String getComplementId(String str,String targetId){
            String resultId = str.substring(0, str.length()-targetId.length())+targetId;
            if(StringUtils.isEmpty(resultId)){
                return null;
            }else{
                return resultId;
            }
    
        }

                 str  为定义的满足B系统实现Id     be60d293-907a-4fe4-8fb1-0a61f0fd4555

                 targetId      A传过来的整型ID  我把他转为String  213

                resultId       最终得到的结果值     be60d293-907a-4fe4-8fb1-0a61f0fd4213


顺带提一下 String 的 replaceAll()  replace()

两个方法在具体实现功能是一样的  将目标字符串替换为指定的字符串


String guid2 = "areaarea-jied-0000-0000-00000213";


String ada = guid.replaceAll("0000", "1111");
String da = guid.replace("0000", "1111");

输出:

areaarea-daqu-1111-1111-11110213
areaarea-daqu-1111-1111-11110213

只是

当使用转义字符进行替换的时候,是有区别的。replaceAll的参数就是regex,是正则表达式。首先会转义  当然处理不当就会出错

并且 replace方法内也调用了replaceAll  所以性能上replaceAll  好一些

所以

     当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数   否则,使用replaceAll函数






猜你喜欢

转载自blog.csdn.net/qq_35180232/article/details/78139697
今日推荐