2017-02-20 1 views
0

die folgende Zeichenfolge Gegeben: /repos/facebook/react/native. Ich muss/repos/entfernen und dann alle Schrägstriche nach dem ersten Bindestrich.Ersetzen Sie alle x nach dem ersten Auftreten

So für das obige Beispiel ist dies das Ergebnis: faceboook/react-native.

Weitere Beispiele: Start: /repos/google/angular/cli Ende: google/angular-cli

Start: /repos/aksonov/react/native/router/flux Ende: aksonov/react-native-router-flux

ich mit .replace('/repos/', '') begonnen haben, dann begann eine Hacky split (von /) zu tun [0] + Karte. Aber ich habe mich gefragt, ob es eine einfachere, weniger geclusterte Art gibt, das mit Regex zu tun? Ich könnte mir vorstellen, dass ich die/repos/entfernen muss, also ist die Frage, wie man alle Schrägstriche NACH dem ersten ersetzt.

Alle geschätzt Ideen, Dank

Antwort

2

es einfach zu halten, können Sie dies tun:

function repl(str) { 
    return str.replace('/repos/', '').replace(/\//g, '-').replace('-', '/') 
} 

nennen es dann so:

repl('/repos/google/angular/cli') 
//=> "google/angular-cli" 

repl('/repos/aksonov/react/native/router/flux') 
//=> "aksonov/react-native-router-flux" 

Es macht den Job in 3 Schritten :

  1. ersetzen /repos/ durch leere Zeichenfolge
  2. Ersetzen Sie alle / von -
  3. erste - Ersetzen von /
+0

@Apswak: Hat es funktioniert? – anubhava

0

Ich bin kein Javascript Assistent, aber was ist mit diesem einfachen Ansatz:

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

Wie wäre es damit:

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

Verwandte Themen