【发布时间】:2019-05-01 03:59:17
【问题描述】:
我在自定义公式框中尝试了这个公式:
=DETECTLANGUAGE(A:A)=ja
但它不起作用。所有单元格都被隐藏。我做错了什么?
【问题讨论】:
标签: regex google-sheets
我在自定义公式框中尝试了这个公式:
=DETECTLANGUAGE(A:A)=ja
但它不起作用。所有单元格都被隐藏。我做错了什么?
【问题讨论】:
标签: regex google-sheets
您可以使用查询的正则表达式(preg):
=QUERY(A:A,"where A matches '.*[\p{Hiragana}\p{Katakana}\p{Han}]+.*'")
.*匹配任意字符不限次数[]+ 匹配里面的任意字符一次到无限次 \p{...}Unicode 类,用于 Han、Hiragana 和 Katakana 脚本Han、Hiragana 和Katakana 字符之一,它也会返回单元格。 【讨论】:
请注意,DETECTLANGUAGE 不适用于数组/范围,因此只能:
=IF(DETECTLANGUAGE(A1)="ja", "Japanese", )
但你可以使用脚本:
function NIPPON(input) {
var output = [];
for (i = 0 ; i < input.length; i++){
try {
output[i] = LanguageApp.translate(input[i], '', 'ja');
}
catch(err) {
output[i] = err.message;
}
} return output; }
=ARRAYFORMULA(FILTER(A1:A, IF(LEN(A1:A)=LEN(NIPPON(A1:A)), LEN(A1:A), )>0))
在数组中使用DETECTLANGUAGE进行英文检测的示例:
=IFERROR(ARRAYFORMULA(IF(LEN(A5:A),
IF({DETECTLANGUAGE(A5)="en";
DETECTLANGUAGE(A6)="en";
DETECTLANGUAGE(A7)="en";
DETECTLANGUAGE(A8)="en";
DETECTLANGUAGE(A9)="en";
DETECTLANGUAGE(A10)="en"},
LEN(A5:A), 0), )), "-")
【讨论】: