对于花式批量处理,自然要说到正则表达式。
“正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑”——百度百科。这适用于有编程基础、且较为复杂的处理需求。
还有一个简单点、易操作的方法,那就是通配符。
EXCEL通配符
对于EXCEL,没有特别的通配符,跟Windows文件搜索可以使用的通配符一样,主要是* 和?,分别代表多个字符和一个字符。如果要分别搜索*和?本身,前面加个~就行。如:搜索“张*”,就能搜到“张三”和“张三丰”,而搜索“张??”并且点单元格匹配,就不能搜到“张三”了。
这些通配符可以在部分函数中使用,如sumif。各位遇到需要文本匹配的时候,可以想一想和试一试看可否用通配符。
那么看一个例子吧:有如下的公交线路名数据,是带方向的。现在需要将方向去掉,也就是去掉最右边的括号内容。但是,注意有些是括号内部还有括号——比如第3条,这时需要将内部的一起删掉;有些是有两个并列的括号——比如第5条,这时只需要删掉最右边的括号。
EXCEL的通配符显然不能解决。用正则当然可以,但可能编程要求略高、略复杂了。那么——就用WORD通配符试试吧。
WORD通配符
作为一个文本处理工具,通配符的强大想想也理所应当了。WORD通配符的功能与用法介绍网上很多。推荐看这篇就够了:https://www.cnblogs.com/whchensir/p/5768030.html简单来说,它可以通过一定方法对数字、字母、中文字符进行识别查找,还有各种控制功能组合使用,比如控制指定位置指定字符的数量。
最重要的是,可以在“替换”框中 用\1\2\3分别代表“查找”框中的第1、2、3个()中的内容,注意括号要为英文字符状态下的。
例如:
“查找”中输入:(张三)是(法外狂徒)
“替换”中输入:\2是\1
勾选“使用通配符”,以下都需要。
点替换,结果就能把“张三是法外狂徒”变成“法外狂徒是张三”了。
那么针对前文提出的问题,给出WORD通配符解决方法。
第一步:
将有两个并列括号的,去掉右边的括号,并将左边的括号变成~。如“101路(A)(B)”替换为“101路~A~”
操作内容
查找:\((*)\)(\(*\))替换:~\1~解释
查找中\(是代表(本身,因为括号本身有通配符的含义,所以要用\来转义——也就相当于EXCEL的~。
随后(*)表示第1个括号内容,用于在替换中指代。\)同样代表)本身。(\(*\))外层的括号代表第2个括号内容,用于在替换中指代,没有就相当于删除。同样的,\(*\)代表括号本身和中间的任意内容——因为观察得知文本中的两个括号的情况都是括号相连的。第二步:
将括号内还有括号的删除。
操作内容
查找:\(*\(*\)*\)
替换:
各位可以理解下,就不再赘述。第三步:
将带括号的删除
操作内容
查找:\(*\)
替换:
前期由于已经将不应该删的括号变成了~,所以可以把带括号的内容删除。
第四步:
将~恢复为正常的括号。
操作内容
查找:~(*)~
替换:(\1)
这样就基本实现了需求了。可能还会有 少数 一个括号 里面有 两个括号的情况 (() () ) ,数量比较少,手动改下好了。
真批量化
你是否觉得,以上还是不算批量,顶多算是半自动化步枪?而你要的是——机关枪。可以可以。大概各位还不知道,WORD也可以记录宏的,与EXCEL一样,位置在“视图”——“宏”——录制“宏”。
不知道的原因是,WORD录制宏应用场景确实比较少,但是以上把WORD作为工具来用了,就非常适合用宏来批量操作,毕竟,你可能要重复使用上述过程很多次。下次只需要把原数据删除新数据进来,再点击录好的宏就好了。
机关枪拿走,下期再见。