You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:40:48