亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不區分大小寫刪除具有特定數據的行

不區分大小寫刪除具有特定數據的行

波斯汪 2023-07-14 10:10:24
我有這個 Google Apps 腳本,它檢查特定列中列出的單詞并刪除與這些單詞匹配的行:function sort() {   var sheet = SpreadsheetApp.getActiveSheet();   var rows = sheet.getDataRange();   var values = rows.getValues();   var rowsDeleted = 0;   var arrayOfWords = ['m?belübernahme','k?nnen übernommen werden','caravan','wohnwagen']   for (var i = values.length - 1; i >= 0; i--) {      var row = values[i];     for (var j = 0; j < arrayOfWords.length; j++) {          if (row['21','17'].indexOf(arrayOfWords[j]) > -1) {                 sheet.deleteRow(i+1);             rowsDeleted++;           break;               }    }   } };我可以檢查單詞不區分大小寫嗎?因此,如果我包含“mietwohnung”之類的單詞,它將刪除所有匹配選項:MIETWOHNUNG、mietwohnung、Mietwohnung?
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

解釋:

  • 您需要將row數組中的每個元素轉換為小寫。為此,您需要使用map()和toLowerCase()。通過這種方式,您將應用toLowerCase到 的每個元素row。修改將在這里:

    if?(row.map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)
  • row['21','17']不是有效的 JavaScript 對象。你不能像那樣對數組進行切片。如果您的目標是僅檢查列21,17然后使用此 if 語句:

    if?([row[21],row[17]].map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)

    注意這里row[21]是列V,是工作表中的row[17]列。R記住 javascript 中的索引是從 開始的0。即,0是 列A,1是 列B等等。


解決方案:

function sort() {?

? var sheet = SpreadsheetApp.getActiveSheet();?

? var rows = sheet.getDataRange();?

? var values = rows.getValues();?

? var rowsDeleted = 0;?

? var arrayOfWords = ['m?belübernahme','k?nnen übernommen werden','caravan','wohnwagen']?


? for (var i = values.length - 1; i >= 0; i--) {??

? ? var row = values[i];?

? ? for (var j = 0; j < arrayOfWords.length; j++) {? ??

? ? ? if (row.map(r=>r.toLowerCase()).indexOf(arrayOfWords[j]) > -1) {? ? ? ? ?

? ? ? ? sheet.deleteRow(i+1);? ? ?

? ? ? ? rowsDeleted++;? ?

? ? ? ? break;? ? ? ? ?

? ? ? }

? ? }?

? }?

};


查看完整回答
反對 回復 2023-07-14
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

已提供解決方案的替代方案


您可以簡單地使用toLowerCase()- 這樣“Mietwohnung”將變成“mietwohnung”,并且可以毫無問題地進行比較。


因此,您可以對腳本進行以下修改:


for (let i = values.length - 1; i >= 0; i--) {

   var row = values[i];

   var found = false;

   for (let k = 0; k < row.length; k++)

      for (let j = 0; j < arrayOfWords.length; j++)

         if (row[k].toString().toLowerCase().indexOf(arrayOfWords[j]) > -1)

            found = true;

   if (found == true) {

      sheet.deleteRow(i + 1);

      rowsDeleted++;

   }

}


上面的腳本循環遍歷數據范圍中的所有值,因此添加了另一個循環,然后使用該函數toLowerCase()檢查該值是否是arrayOfWords數組的一部分,如果需要,則刪除行。這里使用該found變量來指示該單詞是否已找到。


查看完整回答
反對 回復 2023-07-14
  • 2 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號