给出以下字符串:/repos/facebook/react/native
。
我需要删除/ repos /然后在第一个需要破折号之后的所有斜杠。
因此,对于上面的示例,结果如下:faceboook/react-native
。
其他例子:
开始:/repos/google/angular/cli
结束:google/angular-cli
开始:/repos/aksonov/react/native/router/flux
结束:aksonov/react-native-router-flux
我从.replace('/repos/', '')
开始,然后开始进行hacky分割(/
)[0] +地图。但是我想知道是否有一种更简单的聚集方式用正则表达式来做这件事?我想象我必须删除/ repos /,所以问题是如何在第一个之后替换所有斜杠。
任何想法都赞赏, 感谢
答案 0 :(得分:2)
保持简单,你可以做到这一点:
function repl(str) {
return str.replace('/repos/', '').replace(/\//g, '-').replace('-', '/')
}
然后将其称为:
repl('/repos/google/angular/cli')
//=> "google/angular-cli"
repl('/repos/aksonov/react/native/router/flux')
//=> "aksonov/react-native-router-flux"
它通过3个步骤完成工作:
/repos/
替换为空字符串/
替换为-
-
替换为/
答案 1 :(得分:0)
我不是一个javascript向导,但是这个简单的方法呢:
s = "/repos/aksonov/react/native/router/flux";
s = s.replace('/repos/', '');
bits = s.split('/');
final = bits[0]+'/'+bits.slice(1).join('-');
答案 2 :(得分:0)
.replace(/\/repos\/(.*)\/(.*)/,"$1-$2");
答案 3 :(得分:0)
这个怎么样:
const data = ['/repos/aksonov/react/native/router/flux', '/repos/google/angular/cli', '/repos/facebook/react/native']
const reducePath = path => path.replace(/\/.*?\//,'').replace(/\//g, '-').replace(/-/, '/')
for (let path of data){
console.log(`${path} -> ${reducePath(path)}`)
}