2013-08-28 42 views
1

我想用另一个字符串替换字符串中的一段路径。我有一种感觉,RegEx会是这样做的最好方式,但不知道如何。我想用另一个字符串替换XXXXX:如何通过RegEx替换路径中的任意字符串?

resources/audio/xxxxx/someaudio.mp3 

的根路径“资源/音频/”将永远是相同的,但我想,以取代音频文件的父文件夹。音频文件是任意的,可以更改。有人可以帮忙吗?

回答

2

你可以试试这个:

var newFolder = "yyyy"; 
var r = "resources/audio/xxxxx/someaudio.mp3".replace(/(resources\/audio\/).*(\/.*)/g, '$1' + newFolder + '$2'); 
console.log(r); 

看到它的工作here

0

使用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" 
+0

为什么使用捕获组?它会工作,只是自己替换目录名称(即''path/to/file.mp3'.replace(/ \/\/\,'the')')? – andyg0808

+0

@ andyg0808,如果'/ to /'发生两次?我使用捕获组/前瞻来仅匹配文件的父目录。 – falsetru

相关问题