Home > 日本語文字列の分割

日本語文字列の分割


  • Posted by: F&F
  • 2019年9月 3日 13:08

1909031300_50x10.png
トップページの一部分をblogに掲載する時に、全文では長すぎるので途中で切っている。
現在はTwitterへの投稿もIFTTTで行っているので100文字程度で切っている。

Perlので文字列分割はsubstrで行えるが、倍角文字は扱えない。
日本語Perlならいけるかも知れないが、使っていない。
と言う事で、分割した時に中途半端になってしまったコードを丸める処理付きのz_substrなるルーチンを借用し使っていた。
だが倍角・半角混じりの時にはうまく機能しない。
というか、そもそも何らかの複数バイト文字コードになっている(エンコードされている)文字列の加工は必ず破綻する。
そんな事は分かっていたが、最後に\x82みたいなゴミが入るだけだしなぁと知らん顔をしていた。
が、さすがに格好悪いかなと思い、直した。

直したら修整をミスっていて文字列を別の変数に入れてしまっていた。
元々の文字列からタグを抜いたり入れ替えたりと加工しているので分かりにくくややこしくなっている。

文字列をデコードし、substrで規定の文字だけを取り出し、エンコードして元に戻す。
それだけである。

Windowsで元の文字列を作っていて、S-JISなので以下のようになる。
例では3文字(倍角でも半角でも3文字)を取り出す。

#!/usr/bin/perl
use Encode ;
$str = 'あいうえお かきくけこ 半角123 ';
$str = decode('Shift_JIS',$str);
$str = substr($str,0,3);
$str = encode('Shift_JIS',$str);
print "$str\n";

exit;

   

Comments:0

コメント投稿には JavaScript が必要です。ブラウザのJavaScript 機能を有効にしてください。

サインインしなくてもコメントの投稿は出来ます。
サインインしている場合はお名前などを入力せずに、そのまま投稿できます。

登録は簡単&それによって何かが起きるわけではないのでお気軽にどうぞ。
登録ページ書き込み→確認メール送信→確認メールのURLクリックで承認、の手順です。
確認メールに書かれたURLにアクセスしないと登録は完了せず、正しいログイン状態に移行できません。
コメント フォーム
コメント投稿完了までには少し時間がかかります。
二重投稿にご注意下さい。

Home > 日本語文字列の分割



VC