1
我想用另一个字符串替换字符串中的一段路径。我有一种感觉,RegEx会是这样做的最好方式,但不知道如何。我想用另一个字符串替换XXXXX:如何通过RegEx替换路径中的任意字符串?
resources/audio/xxxxx/someaudio.mp3
的根路径“资源/音频/”将永远是相同的,但我想,以取代音频文件的父文件夹。音频文件是任意的,可以更改。有人可以帮忙吗?
我想用另一个字符串替换字符串中的一段路径。我有一种感觉,RegEx会是这样做的最好方式,但不知道如何。我想用另一个字符串替换XXXXX:如何通过RegEx替换路径中的任意字符串?
resources/audio/xxxxx/someaudio.mp3
的根路径“资源/音频/”将永远是相同的,但我想,以取代音频文件的父文件夹。音频文件是任意的,可以更改。有人可以帮忙吗?
你可以试试这个:
var newFolder = "yyyy";
var r = "resources/audio/xxxxx/someaudio.mp3".replace(/(resources\/audio\/).*(\/.*)/g, '$1' + newFolder + '$2');
console.log(r);
看到它的工作here。
使用replace
方法与捕获组:
> 'resources/audio/xxxxx/someaudio.mp3'.replace(/\bxxxxx\/([^/]+)$/, 'yyyy/$1')
"resources/audio/yyyy/someaudio.mp3"
> 'resources/audio/xxxxx/anotheraudio.mp3'.replace(/\bxxxxx\/([^/]+)$/, 'yyyy/$1')
"resources/audio/yyyy/anotheraudio.mp3"
([^/]+)
匹配文件名和捕获作为组1。这组1如$1
在替换字符串中引用。
或者用积极前瞻:
> 'resources/audio/xxxxx/someaudio.mp3'.replace(/\bxxxxx(?=\/[^/]+$)/, 'yyyy')
"resources/audio/yyyy/someaudio.mp3"
> 'resources/audio/xxxxx/anotheraudio.mp3'.replace(/\bxxxxx(?=\/[^/]+$)/, 'yyyy')
"resources/audio/yyyy/anotheraudio.mp3"
为什么使用捕获组?它会工作,只是自己替换目录名称(即''path/to/file.mp3'.replace(/ \/\/\,'the')')? – andyg0808
@ andyg0808,如果'/ to /'发生两次?我使用捕获组/前瞻来仅匹配文件的父目录。 – falsetru