通过简单的问卷APP收上来的Email地址内夹杂大量的空格、中文符号,一进入和发件相关的工作环节就想杀人有没有?
为了解决这个痛苦,今天研究出了一个组合使用 双重DoWhile循环 + 文本函数 组合消除字符串内部空格的小代码段供其他和我一样挣扎在一线的朋友们参考。代码比较6的请直接去最下方搬运拙作,我的注释写得及其详细,但凡有基础都能很快看懂。刚入门的朋友请先听我介绍以下思路。
带人犯!这是一个典型的加在空格的email地址:Abc 12 @ nju .edu. cn 一个短短的地址夹了5个空格,简直丧心病狂……
这个有问题的地址有两个处理难点:
- 空格不在字符串的两端而在中间,因此不能用简单的trim函数(无论是VBA还是Excel公式)解决
- 空格不止一个,网上有不少代码试图用replace的方法替换掉空格,但是很多都是挖了个坑,说明replace最起码在代码实现上不够直观,很多人用不好
针对这两个问题我的思路是:
- 对于在中间的空格,可以先用InStr()方法锁定空格所在位置,然后把字符串从空格处劈成两半,对两半分别进行Trim()去空格——这样一来就把从中间去空格的问题转化成了常规的从两边去空格。随后再把这两半拼接起来即可。
- 由于邮件地址里面夹杂的地址不止一个,需要用DoWhile循环,再检查一次去过空格的字符串看是不是干净了,如果还包含空格就再来一遍……直到当前处理的字符串里再也没有任何空格。
把这个思路落实到代码里就是:
Sub Space_Killer()
Dim ridx As Long ' 定义变量存储行标
Dim w