文字列を一文字ずつ分割する(全角半角混合) – Perl

  • このエントリーをはてなブックマークに追加
  • LINEで送る
この記事は 2007年3月5日 に書かれたものです

文字列を分解し、1文字ずつ処理を行いたい。全角文字、2バイト文字が含まれるなら、Jcode.pmを用いるのがお手軽だ。「指定バイト数で自動的に改行する」で取り上げた、Jcode.pmの「jfold」メソッドを活用すれば良い。

jfoldは指定文字数分取り出してくれる機能を持つ。ここで“1”を指定しておくだけ。その後の全角・半角のチェックはJocdeが自動的に行ってくれる。混在していてももちろん大丈夫だ。

- Sponsored Link -

サンプル

;#
;#文字列を1文字ずつ分割する (全角・半角混合)
;#

use Jcode;

#-- 分割 --#
@char = str_jfold('Hello!は日本語でコンニチワです', 1);


#-- 表示 --#
foreach my $c (@char){
    print "$c\n";
}


#----------------------------------------------#
#■指定文字数で分割する
#----------------------------------------------#
sub str_jfold{
  my $str    = shift;       #指定文字列
  my $byte   = shift;       #指定バイト
  my $j      = new Jcode($str);
  my @result = ();

  foreach my $buff ( $j->jfold($byte) ){
    push(@result, $buff);
  }

  return(@result);
}

実行例

H
e
l
l
o
!
は
日
本
語
で
コ
ン
ニ
チ
ワ
で
す

返却される文字コードがEUCである点に注意

関連ページ

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -