【发布时间】:2021-07-06 11:15:32
【问题描述】:
我正在使用 JavaScript/TypeScript。
我有一个字符串,其中可能包含一些表示重要性或紧迫性的标签。示例:
A:“提醒我明天去店里,真的很重要”
B:“明天去商店很重要。”
我已经建立了一种方法来识别重要短语在主要短语中的位置。例如,对于字符串 A,重要性短语位于字符 40 和 62 之间。在短语 B 中,它位于字符 0 和 16 之间。
我有一个 JSON 对象来描述重要性短语的开始/结束点:
this.importancePosition = { start: 40, stop: 62 }
没问题。
所以我还有其他短语元素检测器:
this.urgencyPosition = { start: 20, stop: 30 }
this.locationPosition = { start: -1, stop: -1 }
等等。
顺便说一句,我使用 -1 作为未找到令牌的指示符。此外,子短语可能不按顺序排列。
那么问题来了:
假设我有主要短语和每个检测到的子短语的位置。现在,我想返回主短语中不属于子短语之一的所有内容。
我有这个:
[aaaaaaaaaaaaaaaaa[subphrase]bbbb[subphrase]ccccccccccccccccccccccccccccccccccccccccc[subphrase]]
我想退货:
[aaaaaaaaaaaaaaaaa bbbb ccccccccccccccccccccccccccccccccccccccccc]
什么是执行此操作的有效方法?我考虑过将它们从主字符串中正则表达式,但这是最干净的方式吗?
【问题讨论】:
-
如果您有索引,您可以只使用索引来重建字符串(如果相同的子字符串在原始字符串中多次出现,则正则表达式也容易出错)。您可能会从查找专注于“查找给定时间表的空闲时间范围”类型问题的算法中受益最多。而不是“时间”,它只是“指数”,但它的工作原理是一样的。例如:stackoverflow.com/questions/48407713/…
-
在我的例子中,我最终使用了正则表达式方法,因为我知道从原文中提取的确切措辞,因此正则表达式的可靠性会很高。但是通过阅读您提供的链接,我学到了一些东西。谢谢你。
标签: javascript regex string typescript