Macro/投稿/72

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F72


Top > Macro > 投稿 > 72

複数のパターンで置換処理

  • ページ: Macro/投稿
  • 作者: miau?
  • カテゴリー: pls
  • 投稿日: 2005-11-07 (月) 01:38:49

メッセージ

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
use strict;
use warnings;
 
use encoding 'cp932';
binmode(STDERR, ':raw :encoding(cp932)');
 
use Encode;
 
use Win32::OLE qw/CP_UTF8/;
Win32::OLE->Option(CP => CP_UTF8);            # OLE のインターフェイスを UTF8 に
 
# パターンファイルの名称取得
my $macfile = ExpandParameter('$M');        # マクロファイル名
(my $patfile = $macfile) =~ s/[^.]+$/txt/;    # パターンファイル名は拡張子を .txt にしたもの
 
# 選択部分の取得
unless (IsTextSelected()) {
    # 未選択時はパターンファイルを開いて終了
    FileOpen($patfile);
    exit(0);
}
my $seltext = GetSelectedString(0);
 
# パターンファイルの読み込み
$patfile = encode('cp932', $patfile);        # ファイル名は cp932
open PAT, "<:encoding(cp932)", $patfile or die "can't open $patfile: $!";
my @lines = <PAT>;
close PAT;
 
# 置換箇所のカウント
my $count = 0;
 
foreach my $line (@lines) {
    # 改行の除去
    $line =~ s/\r?\n//;
    my ($pattern, $replacement) = split(/\t/, $line, 2);
 
    # 置換処理の実行
    eval { $count += ($seltext =~ s/$pattern/$replacement/g); };
 
    # エラー時
    if ($@) {
        MsgBox($@);                            # エラー表示
        FileOpen($patfile);                    # パターンファイルを開く
        exit(1);
    }
}
 
# 置換結果の出力
InsText($seltext);
 
# 件数の出力
$count = 0 if $count eq '';
MsgBox(encode('cp932', "$count 箇所を置換しました。"));
 
#...............................................................................
#...............................................................................
#...............................................................................
#...............................................................................


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2006-07-30 (日) 00:45:45 (4516d)