如何用.split捕获的分隔符重新拼接数组?
保留原分隔符的URL格式化方案
你的代码目前通过/\s+/拆分字符串后用空格拼接,会把原本的换行、多空格等分隔符统一替换成单一空格。要保留原分隔符,不需要拆分再拼接,直接用replace方法处理每个URL候选即可:
修改后的代码:
/** wraps URLS found in message with `<span class="hyperlink"></span>`. */ parseURLs(message) { if (!message) return ''; // 全局匹配所有连续非空白字符,仅处理这些字符,原分隔符自动保留 return message.replace(/\S+/g, (word) => { try { const url = new URL(word); return `<span class="hyperlink">${word}</span>`; } catch { return word; } }); }
改动说明
- 用
/\S+/g全局匹配所有连续非空白字符(对应你之前拆分出的每个word) - 回调函数里保留原有的URL校验逻辑:能解析成URL的就包裹
<span>标签,否则原样返回 - 原字符串中的各种空白分隔符(换行、多空格、制表符等)都会完整保留,因为我们只修改非空白的内容部分
内容的提问来源于stack exchange,提问作者Alex Pappas
相关产品推荐
相关产品推荐

