我正在尝试用另一个字符串替换字符串中的一段路径。我有一种感觉,RegEx 将是做到这一点的最佳方式,但不知道如何。我想用另一个字符串替换 xxxxx:
resources/audio/xxxxx/someaudio.mp3
“资源/音频/”的根路径将始终保持不变,但我正在尝试替换音频文件的父文件夹。音频文件是任意的,可以更改。有人可以帮忙吗?
我正在尝试用另一个字符串替换字符串中的一段路径。我有一种感觉,RegEx 将是做到这一点的最佳方式,但不知道如何。我想用另一个字符串替换 xxxxx:
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);
看到它在这里工作。
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"