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

JavaScript中检测转义字符及${}标记并拆分字符串为数组的方法

解决方案

要同时实现换行符拆分和${}块拆分,可分两步处理:

步骤说明

  1. 按换行符拆分初始数组:先把原字符串用\n拆分,得到初始数组,此时连续的\n会对应空字符串项,满足换行转空项的要求。
  2. 拆分每个项中的${}块:遍历初始数组的每个元素,对非空元素用正则匹配提取${...}块和普通文本块,将这些块依次加入结果数组;空元素直接保留。

代码实现(以JavaScript为例)

function formatStringToArray(inputStr) {
    // 第一步:按换行符拆分得到初始数组
    const lineSegments = inputStr.split('\n');
    const finalArray = [];
    // 匹配${...}块或普通文本的正则
    const tokenPattern = /(\$\{[^}]+\}|[^\$]+)/g;

    for (const segment of lineSegments) {
        if (segment === '') {
            // 空段直接加入结果
            finalArray.push('');
            continue;
        }
        // 提取当前段中的所有${}块和普通文本
        const tokens = segment.match(tokenPattern) || [];
        // 将所有token依次加入结果数组
        tokens.forEach(token => finalArray.push(token));
    }

    return finalArray;
}

// 测试示例1
const testStr1 = "sampe\nanother sample HERE\n\n\nfinal";
console.log(formatStringToArray(testStr1));
// 输出:["sampe", "another sample HERE", "", "", "final"]

// 测试示例2
const testStr2 = "sampe\n${abc}another sample HERE\n\n\nfinal";
console.log(formatStringToArray(testStr2));
// 输出:["sampe", "${abc}", "another sample HERE", "", "", "final"]

关键细节

  • 正则/(\$\{[^}]+\}|[^\$]+)/g会匹配两种内容:
    • \$\{[^}]+\}:匹配完整的${...}块,确保${}内部的内容被完整捕获;
    • [^\$]+:匹配不含$的普通文本,避免误拆分单独的$字符(若需处理单独$可调整正则)。
  • 空段(对应连续换行)直接保留为空字符串,符合需求。

内容的提问来源于stack exchange,提问作者Thidasa Pankaja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:20:41