跳转到内容

highlightSplit 1.0.0

typescript
import { highlightSplit } from 'omn'

适用于 “高亮显示关键词” 场景,将字符串按照给定的规则切分成对象数组,其中匹配关键字的片段会带有 highlight: true 字段。

匹配关键字支持单个/多个字符串,以及单个正则表达式。

注意

使用正则表达式匹配高亮关键词时,请将其中所有的捕获组 (xxx) 改成非捕获组 (?:xxx),否则会输出错误的结果。

示例

常规用法:

typescript
highlightSplit("本周五的天气很不错!", "天气")

// →
[
  { text: "本周五的", highlight: false },
  { text: "天气", highlight: true },
  { text: "很不错!", highlight: false },
]
typescript
highlightSplit("本周五的天气很不错!", ["周五", "天气"])

// →
[
  { text: "本", highlight: false },
  { text: "周五", highlight: true },
  { text: "的", highlight: false },
  { text: "天气", highlight: true },
  { text: "很不错!", highlight: false },
]
typescript
highlightSplit("本周五的天气很不错!", /(?:五|天)/)

// →
[
  { text: "本周", highlight: false },
  { text: "五", highlight: true },
  { text: "的", highlight: false },
  { text: "天", highlight: true },
  { text: "气很不错!", highlight: false },
]

可开启 wrap 配置项,开启后,会确保输出结果的首末元素都一定是不高亮的片段。
如果原本输出首末是高亮片段,则插入一个空文本片段。

typescript
highlightSplit("本周五的天气很不错!", "本周五", { wrap: true })

// →
[
  { text: "", highlight: false }, 
  { text: "本周五", highlight: true },
  { text: "的天气很不错!", highlight: false },
]
typescript
highlightSplit("本周五的天气很不错!", "本周五")

// →
[
  { text: "本周五", highlight: true },
  { text: "的天气很不错!", highlight: false },
]

API

typescript
function highlightSplit(
  input: string,
  keywords: string | string[] | RegExp,
  options?: HighlightSplitOptions
): HighlightFragment[]
参数类型默认值说明
inputstring-待处理的字符串
keywordsstring | string[] | RegExp-关键词
optionsHighlightSplitOptions-可选的配置项

返回值

typescript
interface HighlightFragment {
  text: string
  highlight: boolean
}
字段类型说明
textstring字符串片段
highlightboolean是否匹配高亮关键词

配置项

typescript
interface HighlightSplitOptions {
  wrap?: boolean
}
字段类型默认值说明
wrapbooleanfalse开启后,会确保输出结果的首末元素都一定是不高亮的片段