2017-02-20 11 views
0

次の文字列を指定すると、/repos/facebook/react/nativeとなります。 /repos /を削除してから最初のものをダッシュ​​しなければならないすべてのスラッシュを削除する必要があります。最初のオカレンスの後にすべてのxを置き換えます。

上記の例では、結果はfaceboook/react-nativeです。

その他の例: スタート:/repos/google/angular/cli 終了:google/angular-cli

スタート:/repos/aksonov/react/native/router/flux 終了:私は、その後.replace('/repos/', '')で開始しているaksonov/react-native-router-flux

は(/による)ハック分割を行うようになった[0] +地図。しかし、正規表現でそれをやる方がクラスタ化されていない方が簡単かどうか疑問に思っていましたか?私は/ repos /を削除しなければならないと思いますので、質問は最初のものの後にスラッシュのすべてを置き換える方法です。

感謝任意のアイデア、 おかげ

答えて

2

はそれをシンプルに保つ、あなたがこれを行うことができますすることができます:それは3つの段階で仕事をしていません

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

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

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

をとして、次にそれを呼び出します:

  1. は、私はジャバスクリプトウィザードないんだけど、何この単純なアプローチについて/
+0

@Apswak:この仕事をしましたか? – anubhava

0

することにより、第1 -を交換し-

  • によってすべて/を交換し、空の文字列で
  • /repos/を置き換えます

    s = "/repos/aksonov/react/native/router/flux"; 
    s = s.replace('/repos/', ''); 
    bits = s.split('/'); 
    final = bits[0]+'/'+bits.slice(1).join('-'); 
    
  • 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)}`) 
     
    }

    関連する問題