
[英]Google Apps Script Multiple Find and replace regex in Google Sheets
[英]regex replace not replacing (google apps script)
我正在编写一个Google Apps脚本,该脚本从gmail附件中的CSV文件中提取内容。 我需要将csv数据分成几个数组(每一行都是它自己的数组)。 我已经把所有这些都记下来了。
我的问题是:CSV中的值之一是“ City,St”格式。 因此,当我使用string.split(',')分割数组时,我会得到一个额外的“列”。 我解决此问题的想法是备份并杀死初始字符串中的逗号。 这是我的代码的相关部分:
var attachments = msgs[i][j].getAttachments();
for (var k = 0; k < attachments.length; k++) {
var attachmentData = attachments[k].getDataAsString();
var regex = new RegExp('\,\s(?:[A-Z]{2}\")', 'gi');
attachmentData.replace(regex,' ');
...
所以我想做的就是找到一个逗号,然后是一个空格,然后是两个字母,再加上一个引号。 我只想用空格代替逗号。 我也尝试过
var regex = new RegExp('(\,\s)([A-Z]{2}\")', 'gi');
attachmentData.replace(regex,$2);
没有运气。 这是我正在运行的(很长)数据字符串的随机样本:
语音,传入(###)###-####,(###)###-####,``德克萨斯州达拉斯'',2014/12 / 12,06:26 PM,电话,语音邮件,00:00:27,$ 0.000,-,,,传入,(###)###-#### ,, ### ,,“达拉斯,TX”,12 / 12 / 2014,06:26 PM,电话,语音邮件,00:00
谁能看到我没看到的关于为什么它不起作用的信息? (或者对更好的方法有任何想法吗?)
replace()方法返回一个新字符串,该字符串具有部分或全部模式匹配项,并由替换项替换。
str.replace
不会更改字符串,其中as返回带有替换的新字符串。 因此,您可能需要编写类似
var regex = new RegExp('(,\\s)([A-Z]{2}")', 'gi');
var replacedData = attachmentData.replace(regex,'$2');
注意
您可以将第一个捕获组删除为
var regex = new RegExp(',\\s([A-Z]{2}")', 'gi');
var replacedData = attachmentData.replace(regex,'$1');
您可以在这种情况下使用正则表达式,然后将$1
和空格一起打印回该块:
s = s.replace(/,( [A-Z]{2}")/, ' $1');
^^ ^ ^^^
comma ^^^^^^^^^ print back replacing comma with space
|
catch the group of space + two letters + "
现场观看:
var s = 'Voice,Incoming,(###) ###-####,(###) ###-####,,,,"Dallas, TX",12/12/2014,06:26 PM,Phone Call,Voicemail,00:00:27,$0.000,-,, ,Incoming,(###) ###-####,,###,,,"Dallas, TX",12/12/2014,06:26 PM,Phone Call,Voicemail,00:00'; s = s.replace(/,( [AZ]{2})/, ' $1'); document.write(s)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.