如何知道一个单元格是否包含古吉拉特语或英文字母?

How to know whether a cell contains Gujarati or English letters?

如果Googlesheet中的单元格内容如下图:

那么在 Apps Script 中,我们如何检查它是否包含古吉拉特语字母。

function containsGujaratFont() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("SheetNameToWriteHere");
  var vals = sheet.getRange("B1:B3").getValues();
  vals.forEach(r => {
    Logger.log(includesGujaratiFont(r[0]));
  });
}

function includesGujaratiFont(str){
  // some coding to identify if str contains Gujarati characters or not
  if(itContainsGujaratiFont){
    return true;
  }else{
    return false;
  }
}

日志应该是:

true
false
true

您不需要使用应用脚本来执行此操作。您可以在 google 张中使用 DETECTLANGUAGE 功能。

如果您在单元格 B2 中输入以下公式,而您的文本位于 A2 中,则该公式将输出古吉拉特语的 GU。

=detectlanguage(A2)    

此函数的唯一限制是如果单元格包含两个语言,即古吉拉特语和英语,它将仅适用于第一个文本元素

例如使用this information时,认为Unicode的范围是\u0A80-\u0AFF。当这个范围在你的脚本中使用时,它变成如下。

修改后的脚本:

在这种情况下,您的includesGujaratiFont函数被修改了。

function includesGujaratiFont(str){
  return /^[\u0A80-\u0AFF]+$/.test(str);
}
  • 在此修改中,当单元格值中的所有字符均为古吉拉特语时,true 为 returned。

  • 如果要returntrue,至少当单元格值中的一个字符是古吉拉特语时,请修改如下。

    • 来自

        return /^[\u0A80-\u0AFF]+$/.test(str);
      
    •   return /[\u0A80-\u0AFF]/.test(str);
      

参考文献: