首次出现后替换所有x

时间:2017-02-20 04:39:27

标签: javascript regex

给出以下字符串:/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 /,所以问题是如何在第一个之后替换所有斜杠。

任何想法都赞赏, 感谢

4 个答案:

答案 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个步骤完成工作:

  1. /repos/替换为空字符串
  2. 将所有/替换为-
  3. -替换为/

答案 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");

工作https://jsfiddle.net/p9mkkk2p/

答案 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)}`)
}