APP下载

巧妙区分中文和英文字符

2018-02-24王志军

电脑知识与技术·经验技巧 2017年9期
关键词:字符串数组昵称

王志军

最近在工作中遇到一个问题,如图1所示,A列是包含中文和英文的混合字符串,现在需要将其区分开来,例如“Abel亚伯(Abelard的昵称)”分隔为“Abel”和“亚伯(Abelard的昵称)”,虽然可以复制到Word利用替换功能查找替换为空,但由于源数据还混杂了一些类似于“Ahdard的昵称”的字符串,因此这一方法并不现实。那么除了手工操作之外,有没有简单一些的方法呢?

我们可以借助数组公式完成上述任务,选择B1单元格,在编辑栏输入公式“=LEFT(A1,MATCH(1=1,LENB(MID(A1,ROW($1:$20),1))=2,)-1)”,这里的ROW函数可以返回一个引用的行号,MID函数可以从文本字符串中指定的起始位置起返回指定长度的字符,LENB函数则可以返回文本中所包含的字符数,此时汉字按2个字节进行计算,MATCH函数可以返回符合特定值特定顺序的项在数组中的相对位置,最后利用LEFT函数从第一个字符开始返回指定个数的字符,按下“Ctrl+Shift+Enter”组合键转换为数组公式。公式执行之后向下拖拽或双击填充柄,很快就可以看到图2所示的效果。后面的内容则可以使用SUBSTITUTE函数进行替换,在C2单元格输入公式“=SUBSTITUTE(Al,Bl,””,1)”,这里的第三参数“1”不可省略,否则会导致后面的英文字符也被同时替换,例如“Abel亚伯(Abelard的昵称)”得到“亚伯(ard的昵称)”的效果,那么就不是我们的原意了,公式执行之后向下拖拽或双击填充柄,最终效果如图3所示。

C列的字符串,也可以使用“=MID(A1,MATCH(1=1,LENB(MID(A1,ROW($1:$20),1))=2,),99)”的數组公式,效果完全相同。endprint

猜你喜欢

字符串数组昵称
JAVA稀疏矩阵算法
十二星座专属现代昵称和古代姓名
JAVA玩转数学之二维数组排序
你爸妈的QQ昵称是什么?
更高效用好 Excel的数组公式
一种基于PowerBuilder环境字符串相似度算法
SQL server 2008中的常见的字符串处理函数
倍增法之后缀数组解决重复子串的问题
其他昵称
最简单的排序算法(续)