JavaScript大小写敏感问题

5

如何使变量“Partnum”不区分大小写。当我运行脚本时,如果我搜索“abcd”,它不会检测到“aBcd”。我不知道该怎么办。

 function doStuff() {
  var ss = SpreadsheetApp.getActiveSheet();

  var starting_row = 2; // starting row to scan for part# on column C

  // outer loop, loop over products sold
  for (var j=6;j<=16;j++) {
    var r = ss.getRange(j,2);
    // read inventory part number entered
    var partnum = r.getValue();
    if (!partnum) {
      continue; // attempt to skip over empty rows in the B6:B16 range
    }
    var partcount = parseInt(ss.getRange(j,1).getValue());
    if (isNaN(partcount) || partcount<=0) {
      // invalid quantity. skip.
      continue;
    }

//  Browser.msgBox("partnum = "+partnum);

    // get list of known part # from the spreadsheet
    var parts = ss.getRange(starting_row,3,9999,1).getValues();
    var found = false;
    for (var i=0,l=parts.length;i<l;++i) {
      if (parts[i]==partnum) {
        // we have found our part. grab inventory count cell.
        found = true;
        var count = ss.getRange(starting_row+i,1).getValue();
        if (count-partcount<0) {
          Browser.msgBox("Error: Inventory for part "+partnum+", is "+count);
        } else {
          // write back the count number for that part, decremented by 1.
          ss.getRange(starting_row+i,1).setValue(count-partcount);
//          Browser.msgBox("Inventory updated.");
        }
        break; // either way, we're done with that part.
      }
    }
    if (!found) {
      Browser.msgBox("Part# "+partnum+" not found.");

    }
  }

}

亚当,你是如何将整个代码段标识为代码的?如果我想要这样做,我必须手动添加四个空格,有没有更快捷的方式? - David
2
选择您的代码并按下代码按钮。另外,尝试 if (parts[i].toLowerCase()==partnum.toLowerCase()) { - Brad Christie
我应该在这段代码的哪里插入它? - David
将旧的 if (parts[i]==partnum) { 替换为上面那个,就在你的“我们找到了零件”的注释之前。 - Brad Christie
3个回答

6
为了更清晰明了,这里是答案。虽然@Freddie是第一个提到它的。
// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
  if (parts[i]==partnum) {

变成:

// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
  if (parts[i].toLowerCase()==partnum.toLowerCase()) { // <-- NOTE CHANGE HERE

编辑 针对非字符串对象

// get list of known part # from the spreadsheet
var parts = ss.getRange(starting_row,3,9999,1).getValues();
var found = false;
for (var i=0,l=parts.length;i<l;++i) {
  if ((parts[i]+"").toLowerCase()==(partnum+"").toLowerCase()) { // <-- NOTE CHANGE HERE

感谢Shadow Wizard。

0

也许你可以使用 toUpperCase() 方法?


toLowerCase() 更有意义。 - Šime Vidas

0

Shadow Wizard提供了解决我的问题的答案

if ((parts[i] + "").toLowerCase() == (partnum + "").toLowerCase()) –

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接