我从来不擅长字符串操作,现在我卡住了。因此,长字符串具有以下内容:
[desktop-detected display-settings main-boxed pace-done header-function-fixed nav-function-fixed nav-function-hidden nav-function-minify mod-sound mod-font]
我想过滤并保留带有 nav-、header-和 mod-* 前缀的字符串,因此清理后的字符串应如下所示:
[header-function-fixed nav-function-fixed nav-function-hidden nav-function-minify mod-sound mod-font]
我不知道如何开始,完全没有头绪...
拆分、过滤和连接
var result = '[' + string.split(/[^w-]+/).filter(function(item) {
return /^(nav|header|mod)-/i.test(item);
}).join(' ') + ']';
JSFiddle 演示:https://jsfiddle.net/c3nff3p6/2/
/[^w-]+/
通过不匹配单词或破折号作为分隔符将短语拆分为数组。
如果项目以这些值之一开头,后跟短划线,则/^(nav|header|mod)-/i
匹配,不区分大小写。
其他解决方案,谢谢@Tushar。
'[' + string.slice(1, -1).split(/s+/).filter(str => /^(nav|header|mod)-/.test(str)).join(' ') + ']'
使用匹配
'[' + string.slice(1, -1).match(/b(nav|header|mod)-S*/g).join(' ') + ']'