职场|工作中有哪些瞬间让你觉得 “此生无悔做程序”?
7812
2020.10.29
发布于 未知归属地

分享两个最近工作上的趣事:

  1. 运营小姐姐让我改一系列文章,提了两点需求:
  • 将文章中 MarkDown 语法中的 java 改成 Java []
  • 去掉小标题前的数字,比如 1.1. 、1.2. 、2.1. 之类的,有的数字后有个空格,有的数字后没有空格

当我打开文章手动修改了一两次之后,突然觉得自己太机械化了,作为一名程序员,这种重复的劳动何不交给程序来做?文章一共十几篇,一个个修改的话,工作量还是有点大的。于是花了十几分钟,用 VSCode 写了一段 Java 程序:

Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.CharArrayWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.nio.charset.StandardCharsets;

public class Work {
    public static void main(String args[]) {
        work("C:\\Users\\文章所在文件夹路径\\");
    }

    public static void work(String path) {
        File directory = new File(path);
        for (File file : directory.listFiles()) {
            if (file.isFile()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(file, StandardCharsets.UTF_8))) {
                    String line = reader.readLine();
                    CharArrayWriter tempStream = new CharArrayWriter();
                    while (line != null) {
                        if (line.matches(".*\\d\\.\\d\\.(\\s)?.*")) {
                            System.out.println(line + " replace to " + line.replaceAll("\\d\\.\\d\\.(\\s)?", ""));
                        }
                        if (line.contains("```java")) {
                            System.out.println(line + " replace to " + "```Java []");
                        }
                        tempStream.write(line.replaceAll("\\d\\.\\d\\.(\\s)?", "").replaceAll("```java", "```Java []") + System.getProperty("line.separator"));
                        line = reader.readLine();
                    }
                    try (FileWriter writer = new FileWriter(file)) {
                        tempStream.writeTo(writer);
                    } catch (Exception e) {
                        System.out.println("~~~write error:" + e);
                    }
                } catch (Exception e) {
                    System.out.println("~~~read error:" + e);
                }
            } else {
                work(file.getAbsolutePath());
            }
        }
    }
}

思路就是先递归地把文件流读出来,再逐行检查:

  • 如果包含 三个点+java 字符串,则替换为 三个点+Java [] 字符串。
  • 利用正则表达式匹配,如果匹配上 数字.数字.空格,就全部替换为空字符串。
    将替换后的内容先放到一个临时的输入流 tempStream 中,全部替换完成后,再将输入流写入原文件。
    一键运行,工作完成!
    虽然可能一个个修改可能花费的时间更短,但做完的瞬间还是有满满的成就感,觉得这才是程序员的工作方式!
  1. 我的工位旁边是一个极客同事,最近自己捣鼓 Mac 脚本,自己写了个定时替换壁纸的脚本程序。思路是:
  • 定时下载高清壁纸,设置成电脑壁纸
  • 定期清理以前的旧壁纸,节省内存
    在定期清理旧壁纸的代码中使用了 rm -rf,结果没有控制好,不小心把自己电脑上的所有程序都删除了。最近这两天一直在重装环境,伴随着不间断地 wtf!虽然办公室同事们都非常不厚道地笑了,但或许这就是敲代码的快乐所在。

感觉程序员的办公室里还是很欢乐的,大家工作中有什么快乐瞬间呢?

评论 (10)