[4]の検索結果
Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。
ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。
UTF-8では、
1バイト目の先頭ビットが0の場合は1バイト文字
1バイト目の先頭から3ビットが110の場合は2バイト文字
1バイト目の先頭から4ビットが1110の場合は3バイト文字
1バイト目の先頭から5ビットが11110の場合は4バイト文字
1バイト目の先頭から6ビットが111110の場合は5バイト文字
1バイト目の先頭から7ビットが1111110の場合は2バイト文字
という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。
以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。
#!/usr/bin/perl
use strict;
use warnings;
my $testAscii = "ABCDEFG";
my $testHira = "あいうえお";
my $testKata = "アイウエ";
my $testKanji = "愛々木";
my $testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
print "length($testAscii) = ".length($testAscii), "\n";
print "strlen_utf8($testAscii) = ".strlen_utf8($testAscii), "\n";
print "length($testHira) = ".length($testHira), "\n";
print "strlen_utf8($testHira) = ".strlen_utf8($testHira), "\n";
print "length($testKata) = ".length($testKata), "\n";
print "strlen_utf8($testKata) = ".strlen_utf8($testKata), "\n";
print "length($testKanji) = ".length($testKanji), "\n";
print "strlen_utf8($testKanji) = ".strlen_utf8($testKanji), "\n";
print "length($testAll) = ".length($testAll), "\n";
print "strlen_utf8($testAll) = ".strlen_utf8($testAll), "\n";
exit;
# UTF-8でエンコードされた文字列の文字数を取得する。
sub strlen_utf8 {
my ($text) = @_;
my $textlen = length($text);
my $pos = 0;
my $count = 0;
while ($pos < $textlen) {
my $code = ord substr($text, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
$pos += $bytelen;
$count++; # 文字数をカウント
}
return $count;
}
# 文字のバイト長を求める
sub _bytesize {
my ($code) = @_;
my $size = 1;
if (0x80 & $code) { # 1バイト文字以外
$size++;
$code <<= 1;
for my $i (2 .. 8) {
last if (!(0x80 & $code));
$size++;
$code <<= 1;
}
}
return $size;
}
strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、 _bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。
_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し 戻り値として返しています。
ゼロからわかる Perl言語超入門
技術評論社 著者:高橋 順子
amazon.co.jpのカスタマーレビューを見る
powered by amalink
iPhone 5(アイフォーンファイブ)は、米アップルコンピュータ社が製造販売しているカメラ付きのスマートフォン「iPhone」の最新モデル。アルミニウムのボディに4インチのRetinaディスプレイが搭載され、A6チップによりチップの性能はA5チップの2倍になっている。
たったの7.6ミリのとこれまでのiPhoneで最も薄く、軽量化され、通信速度も4G LTEに対応し高速になったことから都市部在住のアップル信者の熱烈な指示を受ける一方、「パチンコガンダム駅」や「餃子の王将駅」といったでたらめな駅名が表示されるなど世界中の地図が正しく表示されない問題や撮影した写真に紫色の「霞み」や「揺らぎ」が出現するという問題が指摘されていることもあって、まだ買うべきでないという人も存在しその評価は分かれている。
ちなみに、iPhone 5は日本ではソフトバンクとauがの携帯通信網が利用できるが、auの方が通信速度が早いにもかかわらず、ソフトバンクの利用者のほうが多いらしい。
アップル - iPhone 5 - これまでで最も薄く、軽く、速いiPhoneです。iPhone 5│ソフトバンクモバイル
iPhone 5 | au
まだ「iPhone 5」を買わない7つの理由。
iPhone 5は機種変、MNP、結局どれが得なの?
ナゾノスイッチ : iOS6のせいで世界中の地図がぐっちゃぐちゃワロタ
アップル、iPhone 5カメラの「パープルヘイズ」問題に公式コメント
利用料金は、初期費用:2,100円(税込)、月額費用:6,720円~(税込)。サービス提供開始記念キャンペーンとして、2012年10月4日 正午から2012年12月28日正午まで申し込みしたユーザーを対象に、初期費用、及び月額費用最大3ヶ月間を無料とするキャンペーンが実施される。
「お名前.com デスクトップクラウド for Windowsアプリ」は、開発者がWindows 8 やスマートフォンなどの様々なデバイスに対応したアプリケーションを開発する際、開発用にPC環境やソフトウェアを準備することなく、コストを抑えてすぐに開発を始められるクラウド型の開発環境で、Windows アプリケーション開発者だけでなく、AndroidやiOSなど他のプラットフォームでアプリケーション開発者なども、Windows 8の新しいユーザーインターフェイスやマルチタッチなどを活用してアプリケーションを容易に開発できる。また、クラウド型の開発環境であることから、インターネットにアクセスできる環境であれば、MacなどWindows以外の端末からもいつでもどこでも同じ開発環境を利用できるという。
GMOインターネットと日本マイクロソフトが提携し、Windows(R)アプリケーションのクラウド型開発環境を世界で初めて提供
for Windowsアプリプラン | お名前.comデスクトップクラウド
Windows Phoneアプリ開発入門
秀和システム 著者:和田 健司
amazon.co.jpのカスタマーレビューを見る
powered by amalink
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
- Zoho Discussions (日本語版) (1 PV)
- 予想外に悪い米雇用統計でドルが急落、来週はドル売り祭か #usdjpy #fx (1 PV)
- レスポンシブウェブデザイン (1 PV)
- アフィリエイト 書籍 (1 PV)
- VENTURE VIEW (1 PV)
- 株式会社日本レジストリサービス(JPRS) (1 PV)
- 「エックスサーバー」ディスク容量、MySQL数大幅増加 (1 PV)
- 独自ドメインのブログが簡単に作成できる格安レンタルサーバー (1 PV)
- FormStatus(フォームステータス)というサイトを作成しました (1 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (74 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (60 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (47 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (28 PV)
- Google News (グーグルニュース)日本版 (25 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (24 PV)
- [PR]noteで販売している自作EAの一覧 (24 PV)
- MT4向け1ポジブレイクアウトEA「HEADLINE」オープンソースライセンス(GPL3)で公開 #USDJPY (21 PV)
- 爆益を狙うハイリスクハイリターンのナンピンマーチンEA「Hyper Dollar MT5」 (18 PV)
- USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (18 PV)
アクセス統計
ディレクトリ
関連サイト



