0

フォーマットが固​​定されていると仮定した場合のサンプルパスは次のとおりです

4番目の画像の場合、パスは' demo/medium/Web081112_P004_medium.jpg'です。

したがって、画像が100番目の場合、

' demo/medium/Web081112_P100_medium.jpg'

この形式で数値を取得する方法はありますか?reg expを使用することを考えましたか?しかし、4ではなく004を取得する可能性があるため、問題が発生する可能性があります。これを修正するにはどうすればよいですか。ありがとう

4

3 に答える 3

4

この回答は、元の質問のメッセージに基づいています

フォーマットが固​​定されていると仮定した場合のサンプルパス

文字列が変更されない場合は、splitを使用できます。

var num = parseInt(path.split("_P")[1],10);

parseIntは、先頭の0を削除するために基数10が必要であることに注意してください。そうしないと、数値がOCTALになります。

また、_P(Cerbrusで言及されているように)willを分割すると004_medium.jpg、parseIntは末尾の非数値文字を無視するため、parseIntで引き続き機能する文字列を取得することに注意してください。

于 2012-12-07T09:13:50.210 に答える
1

はい、それは間違いなく正規表現の仕事です。

/.*?\/.*?\/.*?_P(\d+).*?/.exec( imagesource )[ 1 ];

このようにして、入力文字列が特定の形式である場合にのみその数値を解析する「厳密な」パターン定義を作成できます。コメントで提案されているように、もっとずさんな書き方をすることができます

/.*?_P(\d+)/.exec( imagesource )[ 1 ];

免責事項:私はその正規表現の天才ではないので、最適化についてコメントしてください:P

于 2012-12-07T09:11:07.010 に答える
0

正規表現は必要ありません。これはint、の最初の出現と2番目の出現の間から取得し"_"ます。

var path = 'demo/medium/Web081112_P100_medium.jpg'
var id = ~~path.split('_')[1].substr(1);

プレフィックスが削除された.substr(1)場合に備えて、を削除します。"P"

画像に負のIDを設定することはおそらくないので、出力を(ダブルビット単位ではなく)~~に変換するための迅速で汚い方法としてを使用しています。stringint

また、これはparseInt、GoogleChromeの別の回答で提案されている機能よりも高速であるように見えます。
ただし、IE / Firefoxにはありませんが、最もよく使用されているブラウザとしては、すでにリードポジションを失っています。

于 2012-12-07T09:13:39.360 に答える