- ベストアンサー
[020-150]を020jpg 021jpg・・・と展開したい。
- [020-150]の020部分の桁数をしらべて。その桁数-Iの桁数=頭につける0の数
- 正規表現を使用して、[020-150]の範囲を取得し、ループさせることで、[020.jpg, 021.jpg,..., 150.jpg]という一覧を表示できます。
- 以下のスクリプトを使用することで、[020-150]を[020.jpg, 021.jpg,..., 150.jpg]と展開することができます。」
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
数値を桁指定して文字列に変換する、という関数を作成すると良いと思います。 例えば、 function numberToString(num, fig) { var tmparray = new Array(fig); var str = num.toString(10); for (var i=str.length; i<fig; i++) { tmparray[i] = "0"; } return (tmparray.join("")+str); } のようにします。 これはnumが正の数であることを前提にしていますが、今回は問題ありません。 その上で、RegExp.$2とRegExp.$3が同じ桁数かどうかによって処理を分ければ良いことになります。従って、 function my1(str) { if (str.match(/^(.*)\[(\d+)\-(\d+)\](.*)$/) != null) { var win = window.open(); if (RegExp.$2.length == RegExp.$3.length) { var fig = RegExp.$2.length; for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) { win.document.write(RegExp.$1 + numberToString(i, fig) + RegExp.$4 + "<BR>\n"); } } else { for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) { win.document.write(RegExp.$1 + i + RegExp.$4 + "<BR>\n"); } } } else { alert("式が展開可能ではありません。"); } } とすればOKです。
お礼
zzzzzz様 投稿してすぐ回答をいただきありがとうございました。 お答えを紙に書き出し今日一日読んでいました。 なるほど文字列にする方法がありましたね。それから関数を用いてリターンで返すという方法というのは、全く思いつきませんでした。 驚きの連続です。 ありがとうございました。 前回の質問は http://www.okweb.ne.jp/kotaeru.php3?q=247951 でした。