【问题标题】:How to fix this string into array using .split() method?如何使用 .split() 方法将此字符串修复为数组?
【发布时间】:2013-12-22 05:10:41
【问题描述】:

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

这是我的代码:

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,但我仍然对这里出了什么问题感到困惑。

提前感谢您的帮助!

【问题讨论】:

  • 你的标题可以用制表符分隔而不是空格分隔吗?
  • 是的,看起来不像一个“”会分裂他们
  • 你可以试试var arrayHeaders = headers.split(/[ \t]+/)

标签: javascript google-apps-script


【解决方案1】:

我很确定您的 headers 变量不是字符串。试试这个:

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

【讨论】:

  • 嗨,@Hallvar,我对我的评论犯了一个错误,即不能在该对象中使用 .split() 方法。我用了两次! =)
  • 我现在就试试你的建议!
  • 谢谢,headers.split(/[\s\t]+/) 是解决方案。 typeof(headers)告诉我这是一个字符串,但它是制表符,而不是标题之间的空格。
【解决方案2】:

当您执行 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");      
    }

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

【讨论】:

  • 谢谢,@shreedhar。有1个和2个空格。所以我用了.split(" ");中的1个空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多