• 締切済み

全角の間に挟まれた1桁の半角英数字を全角に置き換えたいのですが

タイトルの通りなのですが、具体的には リンゴを1個買いました→リンゴを1個買いました(半角1を全角1に) リンゴを10個買いました→リンゴを10個買いました(半角10は半角10のまま) よろしくお願いします。

みんなの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.5

> 私は秀丸を使っていますが 文字コードを気にしなくていいので秀丸マクロが良いと思います。 以下のコードをコピーして「NumZH.mac」などという名前で「\Program Files\Hidemaru」フォルダに保存してください。 あとはメニューの「マクロ」→「マクロ実行」で「NumZH.mac」を選択すれば実行されます。 --------------- gofiletop; while (1) { searchdown "[0-9]+", regular; if (!result ) break; tozenkakuhira; escape; } gofiletop; while (1) { searchdown "[0-9][0-9]+", regular; if (!result ) break; tohankaku; escape; } --------------- 数字が1桁の場合→全角に 数字が2桁以上の場合→半角に 処理は、まず半角数字を“すべて”全角に一度変換してしまってから、その後で2桁以上連続する全角数字を半角に変換しています。 ★ちょっと解らなかった点があります。 1.「全角の間に挟まれた」と言う部分、半角の英数やスペース文字などに挟まれた数字は対象にならないのでしょうか。上記マクロはこの点を考慮していません(区別していない)。 2.「半角の1桁の英数」と言う部分、このマクロでは数字だけを対象にしていますが、英文字も対象にしたいなら、正規表現部分を変更すれば可能です。

  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.4

require "jcode.pl"; while (<>) { jcode::convert(\$_, "euc"); while (/(?<!\d)(\d)(?!\d)/) { my $num = $1; jcode::tr(\$num, "0-9", "0-9"); $_ = $` . $num . $'; } jcode::convert(\$_, "元の文字コード"); print; } # あまりきれいなコードではありませんが (^^;

  • feininger
  • ベストアンサー率41% (74/180)
回答No.3

対象とする文字コードはなんですか? とりあえずShift-JISと仮定すると・・・ $str = 'リンゴを1個2個3個10個20個30個買いました'; $str =~ s/([\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])(\d)([\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])/$1.chr(0x82).chr(hex($2)+0x4f).$3/eg; $str =~ s/([\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])(\d)([\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])/$1.chr(0x82).chr(hex($2)+0x4f).$3/eg; print $str; 面倒なので対象は数字のみとしていますが、A-Zなども同様に変換できるかと。 EUCならもっと簡単になるかも。

noname#129708
noname#129708
回答No.2

私はフリーソフトの「てきすたー」というエディタを使っています。 これは「検索、置き換え」が出来ます。また、大文字を小文字に変換したりも出来ますから、おそらく、ご希望に添えるんじゃないでしょうか。 以前、「XTR」というソフトを使っていました。これは「テキスト加工」では最高でしたが、ニフティ会員でしか入れません。

参考URL:
http://www.vector.co.jp/soft/win95/writing/se067718.html
pretty_moetan
質問者

補足

またまた言葉足らずですみません。 質問しているのは正規表現のことなんです。 説明不足でごめんなさい。

  • viceabu
  • ベストアンサー率18% (3/16)
回答No.1

かな入力のままで1と0を押すと、そのまま大きい「10」になりませんか?? あとは、カナのまま「1」を打って、まずは1の下線(確定する前の点線)をエンターキーでけしてから、次の「0」も同じように入れてみるとか。

pretty_moetan
質問者

補足

言葉足らずですみませんでした。 すでに作成してあるテキストの文書を、エディタとか一括変換のソフトを使って一括処理したいということなのです。 英数字を全角・半角の統一する機能はエディタ(私は秀丸を使っていますが)にもあるし、マクロも出回っているので問題はないのですが、全角(全角のスペース・句読点等も含む)に挟まれた半角の1桁の英数だけを全角に置き換えたいということなのです。

関連するQ&A