写在前面

最近依旧在肝课题。遇到了一个需求,即批量文本替换。可以说,我有这个需求已经有很长时间了,一直没下决心写一个。但现在课题有需要,不写感觉影响我[ 在windows下搞定 ] 所有下游分析。
批量文本替换的主要应用场景有如下:

  1. 大表格中,样品名字要调整(也就是我现在的需求)
  2. 大文本文件中,有些字符串要调整(比如 gff3 文件,做一些 ID 调整)
  3. 批量操作,目前市面上似乎没有直接工具。大多数文本编辑器支持的是 OneByOne,比如Notepad++,先替换LG1为Chr1,再替换gene1为litchi_00001.... 一个一个替换,其实并不实际。
  4. 似乎并没有看到哪里有顺手的界面化工具,支持大文件处理,即不打开文件的情况下,做文本/正则替换处理。
    ....

于是,我写了一个 Batch String Replace,解决以上痛点。

Batch String Replace 功能介绍

找到这个功能,可以通过菜单选择,也可以直接用右上角的功能快速搜索框,输入 Batch... 关键词即可看到。

java 多个字符串替换 高效 java字符串批量替换_java 多个字符串替换 高效

大体的使用方式如下

java 多个字符串替换 高效 java字符串批量替换_java 多个字符串替换 高效_02

使用示例

为了方便演示,此处使用纯粹的文本模式。支持文件输入输出,这块不做也无需演示。示例一 - 字符串

java 多个字符串替换 高效 java字符串批量替换_excel替换字符串中的某个字符_03

替换之后

java 多个字符串替换 高效 java字符串批量替换_java 多个字符串替换 高效_04

示例二 - 正则表达式当然 ,一些时候,如果你会写正则,那么一切会方便很多

java 多个字符串替换 高效 java字符串批量替换_java 多个字符串替换 高效_05

PS: 当然,还是要注意,批量替换的时候 ,会对逐个模式进行替换,使用时还是注意一下摆放顺序,虽然很多时候并不重要。可以通过写更为Specific 的模式来解决。

题外

前前后后 TBtools 也写了五年。从某个角度来说,也可以说是我写 GUI 工具五年了。可能和其他不少开发者有所不同。我写工具的目的是为了解决自己的分析需求 ,所以绝大多数功能,我自己都一直有在用。作为用户,我自己常常会发现一些痛点。在开展分析的过程中,我们可能:

  1. 文件到文件,需要对一个文件,如GFF3或者一些表格文件做文本替换
  2. 文本到文本,只是手上有一段文本要替换,同时要直接可以复制到替换结果
  3. 使用已有的模式列表,或者是直接手写几个模式
  4. 需要测试正则表达式
    .....

于是,我终于还是写了两个Java Beans。使用这两个Beans,甚至可以简化以前的一些功能界面,如 Blast 功能的三个模式.....

java 多个字符串替换 高效 java字符串批量替换_excel替换字符串中的某个字符_06

当然还有其他.... 或许界面化工具的主要优势之一,即是便捷。