文字列の置換

ここでは、2つの置換方法について説明しています。

置換 (1) では、「コンビニ」を「コンビニエンスストア」に置き換えるような場合に利用する方法を。
置換 (2) では、「コンビニ」を「こんびに」に書き換えるケースで利用可能な仕組みを紹介しています。

テスト環境

Windows XP Professional Service Pack 3
ActivePerl 5.8.8 Build 822
Encode-2.33

置換 (1)

$data =~ s/pat/pattern/ig の形をよく使います。

サンプル コード

$data に含まれる pat を Patrol に置き換えます。

大文字小文字を区別しない i が指定されています。
i が指定されていなければ、paT はそのままになります。

すべての pat を Patrol に書き換える g が指定されているので、pat が複数個含まれていた場合でも同様に Patrol に変換されます。
逆に g が指定されていなければ、最初の1つのみ処理を実行してあとはそのままになります。

処理の結果は、shiftjis で出力されます。
スクリプトは utf8 で保存してください。

#!/usr/local/bin/perl

use utf8;
use strict;
use Encode;

binmode STDOUT, ":encoding(shiftjis)";

# 変数の設定
my $data = 'paT Car';

# 任意のパターンを置換
$data =~ s/pat/Patrol/ig;

print $data;

paT Car が Patrol Car になります。

置換 (2)

$data =~ tr/list/LIST/ の形をよく使います。

サンプル コード

$data に含まれる list を、それぞれ LIST に置き換えます。

処理の結果は、shiftjis で出力されます。
スクリプトは utf8 で保存してください。

#!/usr/local/bin/perl

use utf8;
use strict;
use Encode;

binmode STDOUT, ":encoding(shiftjis)";

# 変数の設定
my $data = 'abcdefghijklmnopqrstuvwxyz';

# list を LIST に置換
$data =~ tr/list/LIST/;

print $data;

出力結果は、次のようになります。

abcdefghIjkLmnopqrSTuvwxyz

実は、l, i, s, t の各文字がそれぞれ、L, I, S, T に対応しているのです。

$data =~ tr/0-9/0-9/;

このようにしてあげると、0 から 9 までの(いわゆる)半角数字を、一気に全角にすることもできます。


Powered by NIVOSIdE

今後 Google Analytics によるアクセス解析に記録を残さない