繁体   English   中英

第一次出现后替换所有x

[英]Replace all x after first occurrence

给定以下字符串: /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 split(by / )[0] + map。 但是我想知道是否有使用regex进行聚集的更简单的方法? 我以为我必须删除/ repos /,所以问题是如何在第一个斜杠之后替换所有斜杠。

任何想法表示赞赏,谢谢

保持简单,您可以执行以下操作:

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"

它分三步完成工作:

  1. 用空字符串替换/repos/
  2. 更换所有/-
  3. 首先替换- /

我不是javascript向导,但是这种简单方法呢:

s = "/repos/aksonov/react/native/router/flux";
s = s.replace('/repos/', '');
bits = s.split('/');
final = bits[0]+'/'+bits.slice(1).join('-');
.replace(/\/repos\/(.*)\/(.*)/,"$1-$2");

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

这个怎么样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM