英字のカウントNo.08999
おすぎ さん 19/06/07 16:17
 
お世話になっています。

開いているファイルが日本語ファイルか英語ファイルかを判定するために、
全角文字と半角英字(数字を除く)のカウントをして比べようと思っています。

全角文字は
#charzen = charcount(0x0022220) でOKですが、

半角英字(数字を除く)はどうやってカウントしたら良いでしょうか?

よろしくお願いします。

[ ]
RE:08999 英字のカウントNo.09000
秀丸担当 さん 19/06/07 18:23
 

charcount関数で、数字だけを除いた半角といったような詳しい指定をすることはで
きないです。
やるとしたら、置換して結果の個数を調べるのがやりやすい思います。

例えばアルファベットだけであれば、以下のような感じです。
setcompatiblemode 0x20000;
replaceallfast "[A-Za-z]","\\0",regular;
#a=result;
message str(#a);
endmacro;

記号なども含めた半角ということであれば、文字コードの範囲を指定して以下のよう
な感じでできます。
文字コードは、IMEパッドなどで、Shift-JISの一覧表を見るとわかります。
setcompatiblemode 0x20000;
replaceallfast "[\\x20-\\x2f\\x3A-\\x7e]","\\0",regular;
#a=result;
message str(#a);
endmacro;

置換だと編集したことになってしまうので、都合が悪い場合、複数選択をして選択数
が幾つかで知る方法も考えられます。
setcompatiblemode 0x00120000;
setsearch "[A-Za-z]",0x10; //0x10=regular
selectallfound;
message str(multiselectcount);
endmacro;

[ ]
RE:09000 英字のカウントNo.09001
おすぎ さん 19/06/08 10:03
 
なるほど
置換個数を調べてみます。

ありがとうございました。

[ ]