[rank:a]の検索結果
Perlのsubstr関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。それでは不都合なことも多いので、半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。
以下はそのコードです。[Perl]UTF-8でエンコードされた文字列の文字数を取得するコードと同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。
#!/usr/bin/perl
use strict;
use warnings;
my $testStr = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
print "substr_utf8($testStr, 0, 5) = " . substr_utf8($testStr, 0, 5), "\n";
print "substr_utf8($testStr, 3, 3) = " . substr_utf8($testStr, 3, 3), "\n";
print "substr_utf8($testStr, 10, 4) = " . substr_utf8($testStr, 10, 4), "\n";
print "substr_utf8($testStr, 13, 5) = " . substr_utf8($testStr, 13, 5), "\n";
print "substr_utf8($testStr, 13) = " . substr_utf8($testStr, 13), "\n";
exit;
# UTF-8でエンコードされた文字列の部分文字列を取り出す
# substr_utf8 (文字列式, オフセット[, 長さ])長さを指定しなかった場合は最後まで
sub substr_utf8 {
my ($src, $offset, $len) = @_;
my $srclen = length($src);
my $pos = 0;
my $count = 0;
my $dest = '';
while ($pos < $srclen) {
my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
if (defined($len)){
if ($count >= $offset && $count < ($offset + $len)) {
$dest .= substr($src, $pos, $bytelen);
}
} else { # 長さ指定なし
if ($count >= $offset) {
$dest .= substr($src, $pos, $bytelen);
}
}
$pos += $bytelen;
$count++; # 文字数をカウント
}
return $dest;
}
# 文字のバイト長を求める
sub _bytesize {
my $code = shift;
my $size = 1;
if (0x80 & $code) { # 1バイト文字以外
$code <<= 1;
for my $i (2 .. 8) {
$size++;
$code <<= 1;
last if (!(0x80 & $code));
}
}
return $size;
}
substr_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、 _bytesize関数を呼び出して文字のバイト数を求め、その文字がパラメータで指定された範囲の場合は、戻り値として返す文字列に連結し、そうでなかった場合は文字数のカウントアップのみ行なっています。
_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。
もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design plus)
技術評論社 著者:木本 裕紀
amazon.co.jpのカスタマーレビューを見る
powered by amalink
レンタルサーバーとは
レンタルサーバーとは、ホームページの運営やメールの送受信に必要となるサーバーをインターネット経由でレンタルするサービスで、1台のサーバーを複数のユーザーが使用するものは共用サーバー、1台のサーバーを1ユーザーが使用するものは専用サーバーと呼ばれる。
おすすめの格安レンタルサーバー
簡単にブログが作成できるレンタルサーバー
Movable Type がインストール可能なレンタルサーバー
独自ドメインのブログサイトが簡単に構築できるレンタルサーバー
格安ドメイン取得サービス「muumuu domain(ムームードメイン)」
レンタルサーバーリンク集
IBMはオープンソースを支持し続けるのか?
また、IBMが特許を持ち出してOSSを(用いてビジネスをしている企業を)威嚇したという事実も見逃せない。IBMは一方でOSSを支持する姿勢を示しておきながら、一方では自社にとって都合の悪いOSSは威嚇するということを、CTOが示してしまったのである。都合の良いOSSだけを支持するのは、単なる「利用」であり、「支持」とは言わない。
個人や非営利団体がオープンソースソフトを開発しているならともかく、IBMが上場している株式会社である以上、IBMの不利益となることに対してはそれがOSSであれなんであれ攻撃するというのは、資本主義社会では当然のことではないでしょうか。逆にそうしないと、IBMの経営陣は株主から背任として追求されクビになってしまうでしょう。そしてそれは他の会社、例えば子会社のMySQLごとサン・マイクロシステムズを買収し、今後もMySQLを強化する方針を明らかにしているOracleも同じはずです。
でもそれは最初からわかっていたことで、それをわかった上でこれまで一緒にやってきたのではなかったのかと思うので、いまさらそれを「偽善」といって非難するのは微妙な感じです。
とにかくオープンソースにかかわる開発者は、営利企業がオープンソースを支持するのは、それが彼らにとって金になるときだけだということは忘れてはいけません。
マイコミジャーナル「米IBMの書簡にオープンソース支持者が非難」
開発中のMySQL 5.5、デフォルトエンジンはInnoDB、200%の性能向上。「MySQL Conference & Expo」基調講演で紹介
アクセスランキング
今日のアクセスランキング TOP 10
- 2NN 2ちゃんねるニュース速報+ナビ (8 PV)
- FC2まとめ (3 PV)
- [PR]noteで販売している自作EAの一覧 (3 PV)
- GMOインターネットがアプリケーション開発者向けにクラウド型開発環境の提供を開始 (2 PV)
- ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (2 PV)
- 爆益を狙うハイリスクハイリターンのナンピンマーチンEA「Hyper Dollar MT5」 (2 PV)
- レンタルサーバー (2 PV)
- MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (2 PV)
- 無料メールフォームCGIのダウンロード (2 PV)
- 将棋倶楽部24がフィッシャールール(早指し3)導入 (2 PV)
今月のアクセスランキング TOP 10
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (1158 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (126 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (109 PV)
- FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (100 PV)
- [PR]noteで販売している自作EAの一覧 (71 PV)
- zen-coding (62 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (49 PV)
- FC2まとめ (46 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (41 PV)
- Google Maps(グーグルマップ)日本版 - 地図検索、ルート検索 (35 PV)
アクセス統計
ディレクトリ
関連サイト


