如何使用.split()方法将此字符串修复为数组?

时间:2013-12-21 20:36:08

标签: javascript google-apps-script

我在GAS脚本中遇到JS .split()方法的问题。我将其他Google工作表的标题复制并粘贴为变量headers(通常的方式是复制和粘贴)。此粘贴选项包含一些空和未定义的元素。我需要在数组中转换这些元素。所以我拆分它并使用.filter来清理空元素。但是,当我运行脚本时,var arrayHeaders仍然等于headers,就像.split(" ")没有做任何更改一样,这样:

enter image description here

这是我的代码:

var headers = "STUDENT  Parentage   GRADE   YEAR    DATE    GUIDE";
  var arrayHeaders = headers.split(" ");
//  arrayHeaders = arrayHeaders.filter(function(n){return n});
    Logger.log("headers = " + headers);
    Logger.log("arrayHeaders = " + arrayHeaders);
    Logger.log("arrayHeaders length " + arrayHeaders.length);

    for (var i = 0; i < arrayHeaders.length; i++){      
      var NOME_Cell = sheet.getRange(1, i +1);
      Logger.log("NOME_Cell" + NOME_Cell);
      Logger.log("arrayHeaders[i]" + arrayHeaders[i]);     
      NOME_Cell.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");      
         }

如果我在粘贴字符串并再次按空格后删除所有空格,那么.split(" ")效果很好。 在提出这个问题之前,我读过this other one,但我仍然坚持这里出了问题。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我很确定你的header变量不是String。试试这个:

var arrayHeaders = headers.toString().split(/[\s\t]+/);

答案 1 :(得分:0)

当您执行split(“”)时,请确保字符串中的单词与传递给.split()方法的相同内容分开。 您的arrayHeaders与标题相同。

var headers = "STUDENT Parentage GRADE YEAR DATE GUIDE";
  var arrayHeaders = headers.split(" ");
//  arrayHeaders = arrayHeaders.filter(function(n){return n});
    Logger.log("headers = " + headers);
    Logger.log("arrayHeaders = " + arrayHeaders);
    Logger.log("arrayHeaders length " + arrayHeaders.length);

    for (var i = 0; i < arrayHeaders.length; i++){      
      var NOME_Cell = sheet.getRange(1, i +1);
      Logger.log("NOME_Cell" + NOME_Cell);
      Logger.log("arrayHeaders[i]" + arrayHeaders[i]);     
      NOME_Cell.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");      
    }

我认为,标题的分离并不相同。确保标题的分隔是一个空格或两个空格或三个空格。