JavaScript如何更优雅地实现字符串首单词加粗效果
首单词加粗的更优实现方案
你当前的数组拆分拼接逻辑可以实现基础效果,但存在两个明显缺陷:
- 当字符串开头存在连续空格时,
split(" ")得到的第一个元素是空字符串,会生成无内容的空<strong></strong>标签 - 全量拆分数组再重新拼接的写法冗余度较高
推荐实现(正则方案,鲁棒性最强、代码最简洁)
直接用正则匹配开头空白后的第一个连续非空字符序列,替换时直接包裹加粗标签即可,一行代码搞定:
// 适配所有语种、特殊字符组成的首单词,自动跳过开头多余空格 title = title.replace(/^\s*\S+/, match => `<strong>${match}</strong>`);
如果只需要匹配常规英文单词(字母、数字、下划线组成),可以把正则调整为/^\s*\w+/。
效果对比
针对测试用例" 测试文本 hello world":
- 原方案输出:
<strong></strong> 测试文本 hello world(开头生成空标签,不符合预期) - 正则方案输出:
<strong>测试文本</strong> hello world(正确跳过开头空格,首单词正常加粗)
如果不想使用正则,也可以通过trimStart计算首单词偏移量实现,但代码量远高于正则方案,没有特殊场景需求不推荐使用。
内容的提问来源于stack exchange,提问作者Alan Montefiore
相关产品推荐
相关产品推荐

