【问题标题】:How to display, using a filter, only cells that contain Japanese in Google Sheets? [closed]如何使用过滤器仅在 Google 表格中显示包含日语的单元格? [关闭]
【发布时间】:2019-05-01 03:59:17
【问题描述】:

我在自定义公式框中尝试了这个公式:

=DETECTLANGUAGE(A:A)=ja

但它不起作用。所有单元格都被隐藏。我做错了什么?

【问题讨论】:

    标签: regex google-sheets


    【解决方案1】:

    您可以使用查询的正则表达式(preg):

    =QUERY(A:A,"where A matches '.*[\p{Hiragana}\p{Katakana}\p{Han}]+.*'")
    
    • .*匹配任意字符不限次数
    • []+ 匹配里面的任意字符一次到无限次
    • \p{...}Unicode 类,用于 HanHiraganaKatakana 脚​​本
    • 请注意,正则表达式应与整个单元格匹配。按照现在的写法,即使找到HanHiraganaKatakana 字符之一,它也会返回单元格。

    【讨论】:

      【解决方案2】:

      请注意,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), )), "-")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 2020-02-05
        • 2021-05-22
        • 2012-04-23
        • 2017-08-20
        相关资源
        最近更新 更多