2016-11-30 4 views
1

私は私がゼロから機能をしなければならないべきjavascriptでパスを変換するには?特にangularjs?

/modules/useraccounts/client/img/portfolio/uploads/98253cf4f19be659041f55552e5d973d 

または

modules\useraccounts\client\img\portfolio\uploads\98253cf4f19be659041f55552e5d973d 

から

/modules/useraccounts/client/img/portfolio/uploads/98253cf4f19be659041f55552e5d973d 

への からパス を変換する必要がありますか? javascriptとangularjsの強力なlibを使いたいです。 それを行う方法は? 何でも助けてくれます!おかげさまで

答えて

1

最初のケースがちょうどsliceが必要です。

if (str[0] === '.') { 
    str = str.slice(1); 
} 

第二のケースを、私はおそらくreplaceRegExを使用したい:

str.replace(/\\/g, '/'); // the 'g' is for global; without it, only the first occurrence is replaced 

これらは両方のバニラJavaScriptのメソッドです。ここでどんな派手な角度のトリックも必要ありません。

これらの2つの方法がそうのような簡単な関数に入れることができます。

function formatPathString (str) { 
    if (str[0] === '.') str = str.slice(1); 
    return str.replace(/\\/g, '/'); 
} 

1つの警告:通常のJSの文字列で、バックスラッシュは/エスケープするために使用されている特殊文字を形成するので、バックスラッシュとパスはなるかもしれませんバックスラッシュが正確にエスケープされていない場合は問題があります。 \t組合せは意味があるが、他のものではないので、"this/is/a/test"もたらし、むしろ"thisisa\test"ません"this\is\a\test".replace(/\\/g, '/')すなわち

"this\\is\\a\\test"のように、バックスラッシュを含む受信文字列が正しくエスケープされるようにして、メソッドが期待通りに機能するようにする必要があります。

+0

ありがとうございます。私にとっては大きな助けとなりました –

関連する問題