搜索
写经验 领红包
 > 地理

另辟蹊径提取字符串内非中文字符的方法(怎么提取字符串任意字符)

导语:另辟蹊径提取字符串内非中文字符

接到一个任务,要在一列中文英文字符混杂的字符串内提取非中文字符出来。某度的公式要么在使用上对格式有限制,要么复杂得让人看不懂,因此走上了自己找路子的不归路。

过程就不多说了,直接上干货。基本解决思路:将字符串用mid函数拆分为单个字符;用lenb计算该字符字节数,如果结果为2,证明是中文字符,则用if函数控制其结果为空值,否则为mid函数结果;最后用concat函数将这些单个字符再次组合成字符串。

公式(数组公式,输入公式后同时按住Ctrl+Shift+Enter键才能得到正确结果):

=CONCAT(IF(LENB(MID(A2,ROW($1:$100),1))=2,,MID(A2,ROW($1:$100),1)))

解析:

第一步:a=MID(A2,ROW($1:$100),1),得到结果为一个数组,数组元素为A2单元格内单个字符。ROW()函数的功能是获取1到100数值,配合MID()逐一截取A2单元格内单个字符,A2单元格字符个数不能超过100,如果大于100,将100改到比A2单元格字符总数还大的数值。

第二步:b=(LENB(a)=2),用LENB判断第一步截取单个字符为单字节字符还是双字节字符(中文字符为双字节字符,英文为单字节字符)。得到结果为一个数组,数组元素为TRUE和FALSE的集合,当第一步字符为单字节字符为FALSE,否则为TRUE。

第三步:c=IF(b,,a),结果为一个数组,数组元素是空值和第一步MID()函数获取单字符的集合。用IF函数控制双字节字符输出空值,单字节字符输出其本身。

第四步:d=CONCAT(c),结果为一个字符串。用CONCAT()函数将第三步结果的数组连接成一个字符串,由于双字节字符已经被替换为空值,不再显示,因此得到的结果就是英文的单字节字符。

效果:

本文内容由快快网络小故创作整理编辑!