高效开发必备技能

引言:高效开发?

我们知道,代码开发是个不断进步,不断升华自我的过程,但就目前的工作中,有太多太多我们认为是重复工作的工作。我们以为,工作的重复只有第一遍和第二遍才是对于我们有意义的,它能帮助我们掌握和熟练新的知识。

但是重复的次数多了,工作也就纯粹是工作了,就像你家门口得那两棵槐树一样,一棵是槐树,另一棵还是槐树。

所以我们需要利用我们现有的知识和还未拥有的知识,去优化甚至减少各种各样的重复工作。所以我们会在这里记录各种可以让我们的工作变得高效的骚操作。

当然,如何在高效工作和高负担工作量之间进行权衡,就不在我们这次的讨论范围啦~

高效技巧1:如何快速在每行末尾添加 ","----正则表达式

当你在CV操作的时候,是不是往往会遇到需要对数据进行相关批量操作的时候,

这个时候,数据量小还可以手动操作,但如果数据量大,就非常郁闷了,所以我们需要更高效的方法----正则表达式 + 超级笔记本的正则表达式功能

下面是具体案例:

如何快速在每行末尾添加 ","?

步骤:

image.png

1. 打开替换界面

2. 选择正则表达式模式

3. 输入相关表达式和替换内容

这里简单说明一下,^ 代表每行开头, $ 代表每行结尾 ,其余表达式可自行询问度娘

4. 点击全部替换

完成.......

其余类似问题可操作

高效技巧2:如何对文本内容进行变量替换?

这次的文本案例像这样:

{
  label: intl.get(`${promptCode}.model.processStatus`).d('创建日期'),
  name: 'processStatus',
  type: 'string',
},

原文本有着非常多这样格式的大括号,需求非常简单:如何把name:'后的字符串替换成model.后的字符串?

下面是解决思路:

思路一:

1. 利用notepad++记事本的正则表达式替换功能

2. 文本匹配的正则表达式:

1). 查找字符串model.后面,字符串`前面的字符串 :

(?<=model.).*(?=`)

2). 查找字符串name: '后面,字符串'前面的字符串 :

(?<=name: ').*(?=')

3. 替换失败:原因是替换输入框里的正则表达式被当成了字符串

4. 待解决。。。。。。尝试其他解决方案

思路二:

利用按键精灵PC端软件进行鼠标键盘的重复性操作

(因为文本存在一定的规律性,所以这种办法是可以的,并且非常简单,但是我们不推荐这种方法,因为这样只是从一种cv操作到了另一种cv操作)

思路三:

因为原始文本是json类型,所以可以用js进行相关操作,但作为一个java后端开发......我表示不太会js.....QAQ

于是乎我想到了利用java解决这个问题

思路四(最终思路):

用java的正则匹配加io流进行操作,大概思路如下:

1. 读取文本进入io流,命名为newFile

2. 利用正则表达式匹配newFile中所有model.后面的字符串,并作为数组保存到ArrayList中

3. 利用正则表达式匹配newFile中所有name: '后面的字符串,并依次替换成ArrayList中的数据

4. 将替换后的文本输出并保存

我们想了想,既然我们这个脚本的作用对象是代码,那么新建一个文本文件就显得有些多余了,于是我们将上面的思路进行简化并编写代码,以下是我写的代码最初版:

//批量处理脚本
public static void main(String[] args) {
    //1. 字符串定义
    //请将要输入的文本粘贴在下方(目前没有想到什么输入的好方法,后续优化.....)
    String str = "{\n" +
            "label: intl.get(`.model.startDate`).d('开始日期'),\n" +
            "name: 'startDate',\n" +
            "type: 'dateTime',\n" +
            "},\n" +
            "{\n" +
            "label: intl.get(`.model.endDate`).d('结束日期'),\n" +
            "name: 'endDate',\n" +
            "type: 'dateTime',\n" +
            "},";
    //2.字符串修改
    //2.1定义匹配规则 获取需要的数据
    Pattern pattern =Pattern.compile("(?<=model.).*(?=`)");
    Matcher matcher = pattern.matcher(str);
    ArrayList list = new ArrayList();
    //字符串查找
    while (matcher.find()){
        list.add(matcher.group());
    }

    //2.2定义匹配规则 修改数据
    //贪婪匹配不可,需要改为懒惰
    Pattern pattern1 = Pattern.compile("(?<=name: ').*?(?=')");
    Matcher matcher1 = pattern1.matcher(str);
    int i=0;
    StringBuffer result = new StringBuffer();

    while (matcher1.find()){
        //依次替换
        matcher1.appendReplacement(result, (String)list.get(i));
        i++;
    }
    System.out.println(result);
}

到此,问题解决。

附上代码的github链接,如果可以对它进行优化,欢迎留言评论,或者也可以直接在github进行fork(虽然我也没有用过)

github.com/raxcl/utils

经过一系列复杂的过程,目前已经将脚本更新为可视化图形界面脚本,欢迎下载体验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值