日本語の処理の方法は??
[上に]
[前に]
[次に]
りょぢぃー
[E-Mail]
[HomePage]
1998/03/12(木) 10:21:05
CGIにおける日本語の処理に関しての質問です。
「ある文字列が平仮名ばかりだったら」といった記述をperlで
できるのでしょうか??(^^;)
またたとえば、$cgi =~ s/ー//g;
などのように「ー」を使うとうまく置換が行えないのですが
解決方法はありますか??
miyasiro
1998/03/12(木) 14:05:32
Shift-JISでの話しですよね。
一番簡単なのはEUCにすることだと思います。
Shift-JISでやる場合には、2バイト目が \ や @ や正規表現のメタキャラクタになる文字で問題が生じます。単なる文字列として利用するには、\ と @ のみが問題となるので、シングルクオートで囲めば大丈夫です。でも、正規表現として使う場合には厄介です。例えば、$cgi =~ s/ー//g; は、$cgi =~ s/\x81\[//g; とする必要があります。
「ある文字列が平仮名ばかりだったら」の件は、ご質問の意味が分かりませんでした。
sekikawa
[E-Mail]
[HomePage]
1998/03/12(木) 16:28:34
Perlは全くの初心者ですが...
(自分の勉強のために口をつっこんでるだけなんですけど)
「ある文字列が平仮名ばかりだったら」は
「もしも平仮名以外が見つかったら」と考えてパターンマッチを
行うというのはどうでしょう?
miyasiro
1998/03/12(木) 18:04:21
あっそうか、なるほど、こちらもパターンマッチの話でしたか…
最近(前から?)ちょっと脳ミソの調子が悪いみたいなので、気が付きませんでした(^^;)。ありがとうございます。>sekikawa さん
Shift-JISに限れば、m/^(\x82[\x9f-\xf1])+$/ とするのが一番簡単かな…
>「もしも平仮名以外が見つかったら」と考えてパターンマッチを
今回の場合は、平仮名以外の文字の方が圧倒的に多いので、これを全部指定するのが面倒になるような気がします。それとも、何かいい案があります?
B-Cus
1998/03/12(木) 21:31:43
この前の話に出ていた jcode'tr などを使って、
$str =~ s/あ-ん//g; (のようなことをjcode'trでやる)
として、その後
if ( $str ne "" ){
あ-ん以外の文字が残っている=平仮名以外が見つかった。
}
とするのはどうでしょうか。例によって例のごとく試してませんけど(^^;
miyasiro
1998/03/12(木) 22:07:31
しまった〜ぁ! jcode'tr は頭をよぎったのに、即、却下してしまった(^^;)
'd' option をサポートしてるってのも読んでたのにぃ…
とにかく、B-Cus さんの jcode.pl を使う方法なら文字コードに依存しない
ようにすることも可能です。
りょぢぃー
[E-Mail]
[HomePage]
1998/03/13(金) 22:41:37
[[解決]]
大変ありがとうございました♪
"しりとり"のCGIを作っていての質問でした。
目的のことはできたので大変感謝しています(笑)
ところで「ー」が「\x81[」に対応(?)するっていうのは
どうやってわかるのでしょうか??
miyasiro
1998/03/14(土) 02:33:33
"ー" → "\x81\x5b" は、Shift-JIS コード表を見る
"\x5b" → "[" は、ASCII コード表を見る
でしょか…
うちの場合は、WZ Editor にカットアンドペーストして「バイナリ編集」に切り替えて見ています。
[上に]
[前に]
[次に]