簡體   English   中英

Google Apps 腳本中的字符串等式

[英]String Equality in Google Apps Script

我正在嘗試將從 JSON 對象中檢索到的名稱與 google Sheet 中存在的名稱進行比較。 盡我所能,我無法得到一個產生積極影響的比較。 我試過了:

IndexOf

localeCompare

==

===

我試過key===value String(key)===String(value)String(key).valueof()=String(value).valueof 我還嘗試在所有內容上調用trim()以確保沒有前導/尾隨空格(沒有,通過length()比較確認。

從屏幕截圖中可以看出, keyvalue的值完全相同。 任何指點將不勝感激。 這讓我的項目耽擱了好幾天!

截圖在這里

描述

這不是一個解決方案,但它可能有助於找到問題。 也許其中一個或另一個中的角色不是你想象的那樣。 從視覺上看,它們是比較的,但是如果有一個制表符而不是空格怎么辦。 試試這個,列出每個字符的代碼,看看是否有任何字符有不同的值。

感謝@TheMaster,我添加了另一個消除 for 循環的選項

腳本(選項 1)

function test() {
  try {
    let text = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("A1").getValue();
    console.log(text);
    let code = [];
    for( let i=0; i<text.length; i++ ) {
      code.push(text.charCodeAt(i))
    }
    console.log(code.join());
  }
  catch(err) {
    console.log(err);
  }
}

腳本(選項 2)

function test() {
  try {
    let text = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("A1").getValue();
    console.log(text);
    let code = [];
    [...text].forEach( char => code.push(char.charCodeAt(0)) );
    console.log(code.join());
  }
  catch(err) {
    console.log(err);
  }
}

執行日志

7:57:53 AM  Notice  Execution started
7:57:56 AM  Info    Archie White
7:57:56 AM  Info    65,114,99,104,105,101,32,87,104,105,116,101
7:57:54 AM  Notice  Execution completed

相比

function compare() {
  const json = '{"values":[["good","bad","ugly"]]}';
  const obj = JSON.parse(json);
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const [hA,...vs] = sh.getDataRange().getDisplayValues();
  let matches = [];
  vs.forEach((r,i) => {
    r.forEach((c,j) => {
      let idx = obj.values[0].indexOf(c);
      if(~idx) {
        matches.push({row:i+1,col:j+1,index: idx});
      }
    })
  })
  Logger.log(JSON.stringify(matches))
 }

Execution log
9:31:50 AM  Notice  Execution started
9:31:52 AM  Info    [{"row":1,"col":1,"index":0},{"row":2,"col":1,"index":1},{"row":3,"col":1,"index":2}]
9:31:51 AM  Notice  Execution completed

表 1:

COL1
好的
壞的
丑陋的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM