如何将字符串拆分为单词及空格前的独立标点数组元素?
解决方案:精准拆分单词与独立标点
要实现你需要的拆分效果,别再用split(" ")了,直接用正则表达式的match方法就能搞定,正好满足「标点后带空格才单独成元素」的需求。
核心正则表达式
用这个正则可以匹配所有符合要求的单元:
/\w+(?:['’]\w+)*|[^\w\s]+/g
代码示例
const originalText = "My code doesn't work and, I don't know how to get it to."; const splitPattern = /\w+(?:['’]\w+)*|[^\w\s]+/g; const splitArray = originalText.match(splitPattern); console.log(splitArray);
运行后输出正好是你要的数组:["My","code","doesn't","work","and",",","I","don't","know","how","to","get","it","to","."]
正则规则解释
\w+(?:['’]\w+)*:专门匹配完整单词,包括doesn't、don't这种带撇号的特殊单词,确保这类词不会被拆碎。[^\w\s]+:匹配所有非单词、非空格的字符(也就是标点符号),只要标点是和单词分开的(比如and,里的逗号后面有空格),就会被单独识别成数组元素;就算标点在句尾(比如to.里的点),也会把to和.拆成两个独立元素,完全符合你的需求。
内容的提问来源于stack exchange,提问作者ih8bugs
相关产品推荐
相关产品推荐

