Macro/投稿/72
をテンプレートにして作成
Land.to
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 複数のパターンで置換処理 [#c5e70872]
-ページ: [[Macro/投稿]]
-作者: [[miau]]
-カテゴリー: pls
-投稿日: 2005-11-07 (月) 01:38:49
** メッセージ [#u5870cb4]
#code(perl){{
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 のインターフェ...
# パターンファイルの名称取得
my $macfile = ExpandParameter('$M'); # マクロファイル名
(my $patfile = $macfile) =~ s/[^.]+$/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 ope...
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 箇所を置換しました。"));
#...........................................................
#...........................................................
#...........................................................
#...........................................................
}}
----
#comment
終了行:
* 複数のパターンで置換処理 [#c5e70872]
-ページ: [[Macro/投稿]]
-作者: [[miau]]
-カテゴリー: pls
-投稿日: 2005-11-07 (月) 01:38:49
** メッセージ [#u5870cb4]
#code(perl){{
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 のインターフェ...
# パターンファイルの名称取得
my $macfile = ExpandParameter('$M'); # マクロファイル名
(my $patfile = $macfile) =~ s/[^.]+$/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 ope...
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 箇所を置換しました。"));
#...........................................................
#...........................................................
#...........................................................
#...........................................................
}}
----
#comment
ページ名: