如何使用Google Apps Script按特定格式拆分字符串?
解决Google Apps Script中按引号外空格拆分字符串的问题
你的问题出在直接用split(" ")会拆分所有空格,包括引号内部的内容(比如readable_date里的日期空格)。要实现只拆分引号外面的空格,需要用正则表达式精准匹配。
解决方案代码
// 原始数据数组 var data = ['call number="7203266298" duration="0" date="1646769239639" type="2" presentation="1" subscription_id="89148000007344410028" post_dial_digits="" subscription_component_name="com.android.phone/com.android.services.telephony.TelephonyConnectionService" readable_date="Mar 8, 2022 12:53:59 PM" contact_name="(Unknown)"']; // 预处理:移除换行、首尾空格 let originalStr = data[0].replace(/\n/g, ' ').trim(); // 按引号外的空格拆分字符串 let parts = originalStr.split(/(?=(?:[^"]*"[^"]*")*[^"]*$)\s+/); // 拼接成目标格式 let formattedStr = `var data = [${parts.join(',\n')}]`; // 输出结果 Logger.log(formattedStr);
关键说明
- 正则
/(?=(?:[^"]*"[^"]*")*[^"]*$)\s+/的作用是:仅匹配后面跟着偶数个引号的空格,确保这个空格不在引号内部,避免拆分readable_date这类带空格的字段。 - 预处理步骤
replace(/\n/g, ' ')把原字符串中的换行换成空格,保证拆分一致性;trim()移除首尾多余空格。
执行代码后会得到你期望的格式化结果:
var data = [call number="7203266298", duration="0", date="1646769239639", type="2", presentation="1", subscription_id="89148000007344410028", post_dial_digits="", subscription_component_name="com.android.phone/com.android.services.telephony.TelephonyConnectionService", readable_date="Mar 8, 2022 12:53:59 PM", contact_name="(Unknown)"]
内容的提问来源于stack exchange,提问作者EagleEye
相关产品推荐
相关产品推荐

