zl程序教程

您现在的位置是:首页 >  后端

当前栏目

1个常见的中英文判断问题,写出5个方法,练好9个实用函数 | PQ实战

方法 问题 函数 实战 判断 常见 实用 写出
2023-06-13 09:14:44 时间

前些天,一位朋友问到在Power Query里怎么判断纯英文/中文的问题,如下面表里的产品,要么是全部中文,要么是全部英文的内容:

如果是在Excel里,这个问题也很简单,直接用LEN函数读取字符串的长度——字符个数,并和用LENB函数读取的字节数比较,如果一致,说明是英文内容,因为英文字母和标点符号的长度和字节数都是1,而每个中文字符的长度是1,但字节数是2:

那么在Power Query里,这个问题怎么解决呢?其实方法非常多,以下列举5种,供大家参考,同时可以以这个例子,把涉及的9个函数都练一遍。

- 1 -

TextToBinary法

这个方法的原理跟前面在Excel中使用的方法一致,即通过判断字符数和字节数是否一致而得到结论。

但是,因为在PQ里虽然有读取字符数的函数(Text.Length),但没有直接计算字符串字符数的函数,所以,我们需要先对具体内容转换为二进制数据(Text.ToBinary),然后再读取二进制数据的长度(Binary.Length)即为字节数

- 2 -

ListContains法

这个方法即从每项内容中读取第1个字符(Text.Start),然后判断这个字符是否为英文字母(包含在英文字母列表中:List.Contains)——这种方法非常简单,但是显然也限制比较大,比如应确保第1个字符要么是英文,要么是中文,而不能出现其他标点符号等内容:

- 3 -

ListContainsAny法

这个方法是将待判断的文本拆分为列表(Text.ToList),然后判断这个列表里是否存在任何英文字母(List.ContainsAny)

这里List.ContainsAny函数有个小技巧,可以引入第3个参数 Comparer.OrdinalIgnoreCase忽略大小写,所以第2个参数只要用{“A”..”Z”}大写字母列表即可。

- 4 -

TextRemove法

这个方法的原理很简单,就是把内容中的英文字母给删掉(Text.Remove),然后看跟原来的内容是否一致,如果不一致,说明其中包含英文字母。

-5 -

TextSelect法

这个方法是从内容中选择出英文字母(Text.Select),如果结果不为空("”),则说明存在英文字母。

以上就是关于这个中英文判断问题的5种简单方法。其实,对于大多数的问题来说,都可能存在多个解决方法,比如我以前写过的《惊呆必藏!1个实际工作问题,15种解法,练好22个函数!》。关键在于——

熟练掌握这些基础的功能与函数,理清问题解决的思路!