[020-150]を020jpg 021jpg・・・と展開したい。

解決済みの質問

[020-150]を020jpg 021jpg・・・と展開したい。

http://www.okweb.ne.jp/oshiete_new.php3
の質問のつづきです。

http://www.aaa.com/xxx[020-150].jpg

http://www.aaa.com/xxx020.jpg
http://www.aaa.com/xxx021.jpg
以下このようなものが、 http://www.aaa.com/xxx150.jpgになるまで
一覧表示される。

このようなスクリプトを教えてください。

 forを用いてループさせるのは分かるのですが
どのように頭に”0”をつけて桁あわせすればよいかわからなくて。

http://www.okweb.ne.jp/oshiete_new.php3
を見ながら自分なりに考えているのですが、

[020-150]の020部分の桁数をしらべて。
その桁数-Iの桁数=頭につける0の数・・・・
Iは forの中のループに使用される数で・・・
えーっと、すいません、混乱してます。 





ちなにみ桁をあわせない場合は次のようになります。
zzzzzzさん、大変お世話になりました。
正規表現の便利さを実感しました。
*************************************
<HTML>
<HEAD>
<TITLE>URLを展開</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide script from old browser

function my1(str) {
if (str.match(/^(.*)\[(\d+)\-(\d+)\](.*)$/) != null) {
var win = window.open();

for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) {
win.document.write(RegExp.$1 + i + RegExp.$4 + "<BR>\n");
}
} else {
alert("式が展開可能ではありません。");
}
}


// end Hiding -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#D0D0D0">
<FORM NAME="form1">
<input type="text" name="text1"value="" size="60">
<input type="button" value="クリック"
onClick="my1(document.forms['form1'].text1.value) ">
</FORM>

</BODY>
</HTML>
*************************************

投稿日時 - 2002-04-14 08:33:12

連想キーワード:

QNo.252505

困ってます

質問者が選んだベストアンサー

数値を桁指定して文字列に変換する、という関数を作成すると良いと思います。
例えば、
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です。

投稿日時 - 2002-04-14 08:58:52

お礼

zzzzzz様 
投稿してすぐ回答をいただきありがとうございました。

お答えを紙に書き出し今日一日読んでいました。
なるほど文字列にする方法がありましたね。それから関数を用いてリターンで返すという方法というのは、全く思いつきませんでした。 驚きの連続です。 ありがとうございました。

前回の質問は
http://www.okweb.ne.jp/kotaeru.php3?q=247951
でした。

投稿日時 - 2002-04-14 21:46:16

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • hide ...
  • RegExpでカンマの判定で疑問があります。 ...
  • \'xjis.nls\' ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら