- 作成者投稿
- 2009年6月13日 9:35 pm #7642M6Whiteメンバー
こんにちは。早速ですが質問の本題から。
以下のような日付毎に二つの数値データのある一ヶ月分のテキストデータがあります。
—————————————-
2009/06/01 ←日付
100 ←一行目のデータ
20 ←二行目のデータ2009/06/14
200
212009/06/30
300
25
—————————————-
上記のような、一ヶ月分のデータを、31個のカンマで区切ったデータに置き換えます。
カンマ「,」が31個あり、01日から31日までを、一つ目のカンマの後が01日のデータ、31個目のカンマの後が31日のデータ
というように振り分ける処理です。データがない日付には数値をいれずカンマだけが並びます。以下に例示。
—————————————-
日付毎にある二つの数値を一行目のデータの振り分け
,100,,,,,,,,,,,,,200,,,,,,,,,,,,,,,,300,
二行目のデータの振り分け
,20,,,,,,,,,,,,,21,,,,,,,,,,,,,,,,25,
—————————————-以上、このような処理は EmEditor のマクロで可能なのでしょうか?
わたしは普段マクロを常用していますが、マクロ記録ボタンで記録したものを実行しているだけです。
このような処理はそのやり方でできる範疇を超えているため、EmEditor でできる処理なのかできない処理なのかさえわかりません。教えていただきたいのは、
できる処理なのか、あるいはできないのか?
できない処理なら、他にふさわしいソフトをご存知なら教えて頂きたいです。
できる処理なら、ヒントだけでも教えて頂きたいです。質問者としてわたしの理解度を申します。
正規表現はわかります。VBScriptはある程度わかります。
JavaScript と JScript はまだわかりません。
というレベルです。お時間のある時にご助言頂けると、とても助かります。2009年6月14日 12:00 am #7643snow参加者いまいちご要望を理解せずに書いている気がしますが…。
var dt1 = new Array(32), dt2 = new Array(32);
for (var i = 1, d = document, n = d.getLines(), idx; i <= n; i+= 4) {
idx = parseInt(d.getLine(i).split('/')[2]);
dt1[idx] = d.getLine(i + 1);
dt2[idx] = d.getLine(i + 2);
}
editor.newfile();
document.writeln(dt1.join(','));
document.writeln(dt2.join(','));こういうものでしょうか?
JavaScriptを勉強すれば、ご自分でできるようになると思います。2009年6月17日 5:54 pm #7667M6Whiteメンバーsnow 様ありがとうございます。
>要望を理解せずに書いている気がしますが…。
むしろ、当方の上手でない説明の意図を汲んでいただいて感謝いたします。
さて、教えていただいたマクロを前投稿例に対して実行しますと、まさしく求めていた出力が得られました。
ですので「マクロでできるか?」の疑問は解決いたしました。それで、自分でもこのような JavaScript を書けるようになりたいと思ったのですが、やはり JavaScript はウェブで使うことが前提の解説が多いです。
そこで、 EmEditor マクロのようにローカルで使う用途として勉強する方法を知りたいと思いました。もしよろしければ、「自分はこうして習得した」という方法や、良い書籍などございましたら教えていただけせんか?
ちなみに、今回教えて頂いたマクロで、実際の数年間分のデータを希望通りの形式に置き換えることができました。
本当に感謝です。ありがとうございます。2009年6月18日 8:45 am #7668snow参加者たしかに、「JavaScriptの」書籍を探すと、Webページを動的にいじるものが多いと思います。
ただ、JavaScriptでもCでもPerlでもCOBOLでもなんでもいいんですが、この手のプログラミングは、実際には数十年変わっていないのです(全然違う言語も少しはありますが)。まずは、「こういう動きをすればいいはず」という論理を組み立てます。次にインターフェース(言語ごと、環境ごと)に当てはめて実際に動作させ、最後にもっとうまく書けないかを考えます。
肝心なのは、1番目のステップが言語に依存しないということです。
いろいろ作ってみることでしかこの力は養えないと思うのですが、今回のものであれば比較的すぐに、分かるようになると思います。なお、2番目については、私はほとんど毎回ヘルプやWebを当たります。最近は言語や環境の知識を増やすのがつらいので…。
書籍はこの10年以上買ったことがないので、なんとも言えません。参考にならない返信ですみません…。
- 作成者投稿
- このトピックに返信するにはログインしてください。