とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


perl:str_jfold

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

perl:str_jfold [2017/12/14 20:18]
perl:str_jfold [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== 文字列を一文字ずつ分割する(全角半角混合) - Perl ======
 +~~socialite~~
 +<note important>この記事は2007年03月05日に書かれた物です</note>
 +
 +文字列を分解し、1文字ずつ処理を行いたい。全角文字、2バイト文字が含まれるなら、Jcode.pmを用いるのがお手軽だ。
 +「指定バイト数で自動的に改行する」で取り上げた、Jcode.pmの「jfold」メソッドを活用すれば良い。
 +
 +jfoldは指定文字数分取り出してくれる機能を持つ。ここで"1"を指定しておくだけ。その後の全角・半角のチェックはJocdeが自動的に行ってくれる。混在していてももちろん大丈夫だ。
 +
 +===== サンプル =====
 +<code perl>
 +;#
 +;#文字列を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);
 +}
 +</code>
 +
 +
 +===== 実行例 =====
 +<code>
 +H
 +e
 +l
 +l
 +o
 +!
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +</code>
 +
 +返却される文字コードがEUCである点に注意
 +
 +
 +===== 関連 =====
 +  * [[str2char|文字列を一文字ずつ分割する(半角のみ)]] 
 +
 +
 +===== 関連書籍 =====
 +{{amazon>jp:4873113148}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4798139815}}
 +<html><p style="clear:both"></p></html>
 +
 +
 +{{tag>CGI・Perl例文集 Perl 文字列}}
 +~~socialite~~
  

関連ページ