アプリ版:「スタンプのみでお礼する」機能のリリースについて

文字列$2を300文字まで切り取る方法は
substr($2,1,300)ですが、

全角半角が混在している文字列を
先頭から300バイト取得する方法が分かりません。

お手数をおかけしますが、
ご教授願いします。

A 回答 (2件)

あっさりシングルバイト版のawk を使うか、全角文字を考慮しないよう指定できる


オプションを持つawk(参考URL)を使うのが一番簡単じゃないですか?

ただひとつ心配なのは、300バイト目に全角文字が来た場合です。この時、問答無用で
取り出すと、300バイト目は全角文字が分断されてしまったゴミとなりますが、
これは問題ありませんか?

問題なければ、単純にsubstrで300バイト分取り出せば済みます。それだと困る…と
いうことなら、効率は悪いですがループを組んで一文字ずつ取り出し、

hankaku=sub(/[ -~]/,"1",$2から一文字取り出したもの)

とかやって今取り出した文字を置換してみて、変数hankakuがゼロじゃなければその
文字は半角です。こうやって一文字ずつ取り出しては全角かどうか調べ、長さを調整して
連結していくことになります。

参考URL:http://www.vector.co.jp/soft/dl/win95/util/se015 …
    • good
    • 0

ちょっと情報が古いかもしれませんが、


jgawkというのがあって
gawkを日本語対応させたものですが、
それには、
jsubstr($2,1,300)
で全角半角が混在する文字列から300文字切り出せます。
(300文字ではなく、300バイトの場合は、そのままでいいと思います)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています