【问题标题】:Regex match settings pairs正则表达式匹配设置对
【发布时间】:2017-03-15 22:52:49
【问题描述】:

我将以下电子邮件正文存储在 Google Apps 脚本的变量中:

var body = messages[j].getPlainBody()

身体 =

HOSTNAME=hummingbird
UPTIME=90 days, 23 hours, 12 minutes
LASTREBOOT=12/14/2016 20:45:17
C-USED=638056792064
C-FREE=361226694656
D-USED=
D-FREE=

我想创建一个包含这些信息的数组,例如

var server = {hostname: "hummingbird", uptime: "90 days, 23 hours, 12 minutes ...}

以便随后将值写入电子表格的单元格中。

使用正则表达式或其他合适的方法,最好的方法是什么?

【问题讨论】:

  • 我不相信每一行的末尾都有空格。

标签: regex google-apps-script


【解决方案1】:

由于每行末尾都有换行符 (char(10)),您可以使用 split 函数来创建数组,如下所示:

function createArray(value){
 //value = EmailBody
 var array = value.split("\n")
 var newArray = []
 for (i in array)
   newArray = newArray.concat(array[i].split("="))

   var newObj = {}
   for (var i =0 ; i< newArray.length ; i++)
    if ( i%2 == 0){
      Logger.log(newArray[i+1])
      newObj[newArray[i]] = "\"" + newArray[i+1] + "\""
    }

 Logger.log(newObj)
 Logger.log(newArray)
}

希望有帮助

【讨论】:

  • 谢谢,我在运行我的函数时收到了这个响应:TypeError: Cannot find function split in object function (search) {...}。 (第 62 行,文件“代码”)
  • newArray = newArray.concat(array[i].split("="))
  • 你能记录数组的值吗=>Logger.log(array)。告诉我它记录了什么?
  • [17-03-16 00:04:42:747 GMT] [HOSTNAME=蜂鸟,正常运行时间=15 天 3 小时 3 分钟,LASTREBOOT=02/28/2017 20:58: 46, C-USED=46834638848, C-FREE=2100094308352, D-USED=1250235031552, D-FREE=897112297472, , , ] 奇怪,因为我认为 Logger.log(newArray) 显示正确的数据
  • 复制了上面的输出并在我的最后尝试,工作正常没问题。尝试像这样修改代码:newArray = newArray.concat(array[i].toString().split("="))。您是否还可以在循环中记录 array[i],由于某种原因,其中一个数组元素被类型转换为对象?
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 2016-10-21
  • 1970-01-01
  • 2017-01-03
  • 2013-11-18
  • 2019-03-30
  • 2011-05-01
相关资源
最近更新 更多