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

如何按单词及^标记的高亮部分拆分字符串为目标数组?

拆分含^标记的字符串得到目标数组

给定输入字符串:

const inputValue = 'jhon duo ^has a car^ right ^we know^ that';

需要将其拆分为如下数组:

['jhon','duo', 'has a car', 'right', 'we know', 'that']

单独用split('^')或split(' ')都无法实现需求,这里提供两种可行方案:

方案一:正则表达式匹配

直接用正则把两种目标内容(被^包裹的整段、单个单词)一次性捞出来,再处理掉标记即可。

代码实现:

const inputValue = 'jhon duo ^has a car^ right ^we know^ that';
// 匹配^包裹的内容,或者单个独立单词
const regex = /\^([^\^]+)\^|\b\w+\b/g;
const result = inputValue.match(regex).map(item => {
  // 去掉内容前后的^标记
  return item.startsWith('^') ? item.slice(1, -1) : item;
});
console.log(result); // 输出目标数组

简单说明:

  • 正则/\^([^\^]+)\^|\b\w+\b/g里,前半段抓被^包裹的内容,后半段抓单个单词;
  • match(regex)会提取所有符合规则的内容;
  • 最后遍历结果,把带^的内容去掉首尾标记就ok。

方案二:分步处理拆分后的数组

先按^拆分字符串,再区分不同位置的内容分别处理:

代码实现:

const inputValue = 'jhon duo ^has a car^ right ^we know^ that';
const parts = inputValue.split('^');
const result = [];

parts.forEach((part, index) => {
  if (index % 2 === 0) {
    // 偶数位置是普通文本,按空格拆分成单个单词,过滤掉空项后加入结果
    result.push(...part.trim().split(/\s+/).filter(item => item));
  } else {
    // 奇数位置是^包裹的内容,直接trim后加入结果
    result.push(part.trim());
  }
});

console.log(result); // 输出目标数组

简单说明:

  • 按^拆分后,数组里偶数位(0、2、4...)是普通文本,奇数位(1、3...)是需要保留的整段内容;
  • 普通文本部分按空格拆分(用/\s+/处理多个连续空格的情况),过滤空项后展开添加到结果;
  • 奇数位的内容直接去掉前后空格后添加即可。

内容的提问来源于stack exchange,提问作者Sara Ree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:15:35