« 全角⇔半角変換 v1.1 | トップページ | 文字数(続) »

2022年9月30日 (金)

文字数

lengthメソッド で、文字数を取得することができますが、
半角/全角の区別がありません。
文字列の長さを計算する際、全角文字を2文字分として扱える様、
ユーザー定義関数にしてみました。

function count(str){
i=0;lth=0
for(i=0;i<=str.length-1;i++){
elm=str.substr(i,1)
if(elm.match(/[ -~。-゚]/) != null){lth +=1}
else{lth +=+2}}
return lth}

|

« 全角⇔半角変換 v1.1 | トップページ | 文字数(続) »

コメント

somemさん、こんにちは
私は awk まったく使ってないので未確認ですが
Readme.ja に

--

以前のjgawk/マルチバイト対応gawkとの相違点:
・length, index, substr は常にバイトではなく、キャラクタを単位として動
作します(--ctype=ASCII指定時はバイト=キャラクタです)。バイトを単位と
する同等の関数はありません。欲しいなら説得してください。

--

とありますので、BATファイルでの jgawk/gawk 起動時オプションで「-Wctype=ASCII」又は「--ctype=ASCII」を指示する、というのは、どんな具合でしょう?
その場合、文字そもののを扱う半角全角変換等はうまく行かない?のかもしれませんけど...

投稿: AF | 2022年9月30日 (金) 10時52分

AFさん、こんばんは。

私も、AWKの難しいところは、さっぱりわかりません。(^^;
外変作成に必要な情報をネットで検索、思考錯誤を繰り返してここまできました。
今回の、半角/全角文字のカウント数ですが、定番のgawkm115では、
lemgthが、全角文字を2でカウントしてくれるので、
特に必要ないのですが、後学の為に試してみました。
gawk3.1.5では、正規表現が使えなくて頓挫してます。m(__)m

投稿: somem | 2022年9月30日 (金) 18時42分

AFさん

Readme.ja を読んでみました。
やはり、わからないことの方が多いですが、
後半に正規表現の説明があったので、もう少し試してみます。!(^^)!

投稿: somem | 2022年9月30日 (金) 21時35分

コメントを書く



(ウェブ上には掲載しません)




« 全角⇔半角変換 v1.1 | トップページ | 文字数(続) »