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

TypeScript如何从任意格式字符串中提取test/后的首个单词

问题原因

你现有代码的bug出在边界判断上:当test/目标词位于字符串末尾、后方没有空格时,substring(start).indexOf(' ')会返回-1,计算出的end位置无效,最终截取结果错误。

优化方案

方案1:修正原字符串截取逻辑

只需要补全「后方无空格」的分支判断即可,同时补充字符串中不存在test/前缀的异常处理:

const prefix = 'test/';
const start = text.indexOf(prefix);
let result = '';

if (start !== -1) {
  // 截取前缀之后的所有内容
  const afterPrefix = text.slice(start + prefix.length);
  // 查找第一个空格位置
  const spacePos = afterPrefix.indexOf(' ');
  // 无空格则取到字符串末尾,有空格则取到空格前
  result = spacePos === -1 ? afterPrefix : afterPrefix.slice(0, spacePos);
}

该逻辑可以覆盖所有场景:

  • 输入纯test/xxx格式、前后无其他内容时,正确返回xxx
  • 输入嵌入完整句子的test/xxx时,正确返回空格前的xxx
  • 输入内容不存在test/前缀时,返回空字符串避免运行报错

方案2:正则匹配(更简洁)

直接用正则捕获test/后到第一个空白字符/字符串末尾的连续非空内容,代码更短,适配性更强:

const match = text.match(/test\/(\S+)/);
const result = match ? match[1] : '';

正则中\S+代表匹配1个及以上连续非空白字符,天然适配「后面是空格」「后面是字符串结尾」两种场景,不需要额外写分支判断。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:15:42