ファイルの内容を変換する簡単なプログラムを作りたいのですが、
CやVBなどコンパイル環境がありません。
何かいい方法はないでしょうか。
フリーかシェアウェアのインタプリタとか。
OSはWindwos XPです。
目的は、
htmlファイル内の料金を税込みに変換したい。
htmlファイルは1000ファイルある。
プログラムはこんな感じです。
ファイルを開く
LOOP:
1文字読む。EOFならファイルを閉じる。
もし、文字が \(円マーク)なら
--次の4文字を数字に変換
--数字を1.05倍する。
--ファイルに書く
違ったら
--ファイルに書く
goto LOOP
このプログラムをさらに、UNIXみたいに、
foreach file (*)
--プログラム.exe $file
end
のような感じにしたいのです。
どうぞよろしくお願い致します。
No.5ベストアンサー
- 回答日時:
最近はRubyを触っていないので良い処理方法をイメージできませんが、
以下のスクリプトが参考になれば幸いです。
・スクリプト・ファイルのみ(HTML不要)で実行の結果を見れます。
(他のファイルを参照しない。)
・以下のスクリプト部分をコピーして全角空白を半角空白2個に置き換え、
適当な名前で保存してください。
### スクリプト ここから ######################################
#!ruby -Ks
# 価格らしき数字を税込みに変更
# 数値を貨幣単位に変更
def toMonyUnit(digStr, yen = true)
n = ""
digStr.gsub!(/./){ |m|
n = m + n
""
}
n.gsub!(/\d{3}/, '\0,')
n.gsub!(/./){ |m|
digStr = m + digStr
""
}
if yen
"\\" + digStr
else
digStr
end
end
html = DATA.read
puts "**** 置き換えする前 ****"
print html
puts "\n**** 置き換えした後 ****"
print html.gsub(/\\([,\d]+)/){ |m|
toMonyUnit(sprintf("%\d", $1.gsub(/,/, "").to_i * 1.05))
}
__END__
<html><head><title>TEST</title>
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
</head><body>
<table>
<tr><td>商品A:</td><td>\4,650</td></tr>
<tr><td>商品B:</td><td>\42,980</td></tr>
</table>
</body></html>
### スクリプト ここまで ######################################
No.6
- 回答日時:
#3です。
エクセルVBAで。ツール-マクロ-VBEの画面で挿入-標準モジュールにコピペし実行(F5キー)。
Sub test01()
Open "c:\my documents\tst1.html" For Input As #1
While Not EOF(1)
Line Input #1, a
p = InStr(a, "\")
If p <> 0 Then
MsgBox a
s = ""
For i = p + 1 To p + 10
b = Mid(a, i, 1)
c = Asc(b)
If (c < 58 And c > 47) Then
s = s & b
ElseIf c = 44 Then
Else
GoTo p01
End If
Next i
p01:
MsgBox s
zeikomi = Val(s) * 1.05
MsgBox zeikomi
e = Format(zeikomi, "###,###")
MsgBox e
s = Mid(a, 1, p - 1) & "\" & e & Mid(a, i, Len(a) - i)
MsgBox s
End If
Wend
Close #1
End Sub
Msgboxはテスト確認用です。納得後削除する。
#5のご回答の例でテスト済み。
1レコードに金額1つしかないと仮定。
金額9桁(,含む)以内と仮定。
No.4
- 回答日時:
Ruby はいかかですか。
日本人が開発している、フリーのオブジェクト指向スクリプト言語です。
内容的には、Perlのオブジェクト指向版と理解してください。
** 簡単な例 ***************************
#!ruby -Ks
# カレント以下のHTMLから、金額表記らしき数字のある行を出力
# Shift-JIS 限定
Dir.glob("**/*.html").each{ |f|
open(f) do |html|
while line = html.gets
puts line if line =~ /\\[,\d]+/
end
end
}
***************************************
【注意】インデントに全角空白を使用
●Windows では、以下のものをダウンロードします。
mswin32版 Ruby 1.8.1
http://www.dm4lab.to/~usa/ruby/
Release版の
・ruby-1.8.1-i386-mswin32.zip (3,764KB) ← 【これをダウンロード】
ruby 1.8.1 (2003-12-25) [i386-mswin32]
md5sum : 6bbdabeb29f1a15fa69901e87d1108ac
●導入方法やマニュアルは、本家 Ruby のサイトを参照してください。
http://www.ruby-lang.org/ja/
参考URL:http://www.dm4lab.to/~usa/ruby/, http://www.ruby-lang.org/ja/
「Ruby」という言語を始めて知りました。
まさにこういうテキスト処理が得意のWindwosで動くインタプリタ言語を求めていました。
でもPerlと比べると、文法にちょっとクセがありそうな感じですね。
少しずつ勉強してみます。ありがとうございました。
No.2
- 回答日時:
>ファイルの内容を変換する簡単なプログラムを作りたいのですが、
>CやVBなどコンパイル環境がありません。
ということなので、CもVBもできないのでプログラムを教えて欲しいと言う質問ではないんですよね?
Cが得意なら下記URLにフリーのCコンパイラがあります。VB系が得意なら標準搭載されているVBS+WSHがいいでしょう。同じくJavaScript+WSHというのもあります。
WSHというキーワードで検索すれば解説ページがたくさんあります。
繰り返しは、VBS+WSHでも出来ますが、バッチファイル(~.BAT)で書くほうが楽でしょう。
for %%F in (*) do cscript program.vbs < %%F > %%F.OUT
とか。
参考URL:http://www.borland.co.jp/cppbuilder/freecompiler/
おぉっ!Borland Cが無料に!!
WSHはバッチファイルみたいなものという認識しかありませんでしたが、VBSやJaveScriptと一緒に使えるとは!
おおっ!しかもバッチファイルでこんなことができるとは・・・すっかり忘れていました。
もう一度勉強します。WSHは一から勉強します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- フリーソフト Windowsの特殊文字を削除や変換したい そんなフリーソフトはありますか? 3 2022/11/09 00:05
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PDF ワードで作った文書のPDF化 5 2023/04/10 16:56
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラマーと学歴の関係性に...
-
プログラミングを教えたいです...
-
楽しくて最高のプログラミング...
-
小学1年生の子です。塾に行かせ...
-
vba クリップボードクリアにつ...
-
IT業界より楽に稼げる業界って...
-
ラズパイpico PIOモード
-
pythonで複数画像からgifを作る...
-
Pythonでgif画像が上手く作れない
-
プログラミング ソースコード
-
プログラミング
-
pythonにてseleniumを使うも、...
-
ものづくりに向いているプログ...
-
Google ColaboでGUI作成
-
JRのjsonファイルって使って大...
-
Webサイト内に埋め込んだmp4動...
-
そのまま使っただけなのに・・...
-
正規表現で複数マッチ条件で悩...
-
Pythonって何を意識した言語な...
-
スカラーのベクトル微分
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
chatGPTで次々と質問をしていく...
-
昔のパソコン少年の武勇伝「店...
-
スカラーのベクトル微分
-
ハッシュテーブル(連想配列)が...
-
最新のプログラム言語を学ぶに...
-
pythonにてseleniumを使うも、...
-
Windowsのアプリ開発ってなんの...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
sublimit textっていうエディタ...
-
フリーランスのエンジニアって...
-
ExcelVBAでFormulaR1C1を列範囲...
-
matplotlibで任意の角度の円弧...
-
そのまま使っただけなのに・・...
-
家庭のパソコンで Python の 環...
-
初心者powershellのPS1ファイル...
-
Webプログラムってネイティブア...
-
httpリクエストの送り元の特定
-
プログラミングで例えばゲーム...
-
rpa化する言語としてら何があり...
おすすめ情報