[テキスト]の検索結果


C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。

Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。

#include <stdio.h>
#include <string.h>

int strlen_utf8(char *cp);
int _bytesize(unsigned char code);

int main(void)
{
    char *testAscii = "ABCDEFG";
    char *testHira  = "あいうえお";
    char *testKata  = "アイウエ";
    char *testKanji = "愛々木";
    char *testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";

    printf("strlen(testAscii) = %d\n", strlen(testAscii));
    printf("strlen_utf8(testAscii) = %d\n", strlen_utf8(testAscii));

    printf("strlen(testHira) = %d\n", strlen(testHira));
    printf("strlen_utf8(testHira) = %d\n", strlen_utf8(testHira));

    printf("strlen(testKata) = %d\n", strlen(testKata));
    printf("strlen_utf8(testKata) = %d\n", strlen_utf8(testKata));

    printf("strlen(testKanji) = %d\n", strlen(testKanji));
    printf("strlen_utf8(testKanji) = %d\n", strlen_utf8(testKanji));

    printf("strlen(testAll) = %d\n", strlen(testAll));
    printf("strlen_utf8(testAll) = %d\n", strlen_utf8(testAll));

    return 0;
}

/* UTF-8でエンコードされた文字列の文字数を取得 */
int strlen_utf8(char *cp)
{
    int textlen = strlen(cp);
    int pos = 0;
    int count = 0;

    while (pos < textlen) {
        unsigned char code;
        code = *(cp + pos); /* ASCIIコード値を取得 */
        int bytelen = _bytesize(code);
        pos += bytelen;
        count++; /* 文字数をカウント */
    }

    return count;
}

/* 文字のバイト長を求める */
int _bytesize(unsigned char code)
{
    int size = 1;
    int i;

    if (0x80 & code) { /* 1バイト文字以外 */
        for (i = 2; i <= 8; i++) {
            code <<= 1;
            if (!(0x80 & code)) {
                break;
            }
            size++;
        }
    }
    return size;
}

strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。

また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。

プロクラムの実行結果は以下のようになります。

kagahiro@kagahiro-PC ~/sample/c
$ ./strlen_utf8
strlen(testAscii) = 7
strlen_utf8(testAscii) = 7
strlen(testHira) = 15
strlen_utf8(testHira) = 5
strlen(testKata) = 12
strlen_utf8(testKata) = 4
strlen(testKanji) = 9
strlen_utf8(testKanji) = 3
strlen(testAll) = 52
strlen_utf8(testAll) = 22

[2323] Posted by kagahiro at 2013/07/01 20:46:54
1 point | Link (3) | Trackback (0) | Comment (1)

Yahoo!掲示板は、Yahoo! Japanが提供している株式情報やニュース速報が中心のネット掲示板サービス。

昨年(2012年)12月21日に開始された新しいコミュニケーションサービスの「textream(テキストリーム)」への移行によって、今年(2013年)の2月中旬には、Yahoo!掲示板への投稿、削除ができなくなり(閲覧のみ可能)、3月下旬には閉鎖されることが予定されている。

Yahoo!掲示板
【重要】Yahoo!掲示板をご利用のお客様へ(仕様の違いについてご案内) - 『textream』オフィシャルブログ - Yahoo!ブログ

[2263] Posted by kagahiro at 2013/02/04 10:10:38
1 point | Link (2) | Trackback (0) | Comment (1)

textream(テキストリーム)は、Yahoo! JAPANを運営するヤフー株式会社が「Yahoo!掲示板」に変わるコミュニケーションサービスとして提供を開始したサービス。当面の併存期間を経た上で、2013年初旬にスマートフォン版及びPC版「Yahoo!掲示板」は「textream」に移行する。

「textream」は、ユーザー自身が自由にスレッドを登録し、同じ話題を基に、不特定多数でのコミュニケーションを楽しめるサービスで、ニックネームや写真などのプロフィール情報を登録し、匿名でありながら個人として人格を持って利用できることが大きな特徴。

textream(テキストリーム)
Yahoo! JAPAN、新サービス「textream(テキストリーム)」を公開

[2254] Posted by kagahiro at 2012/12/21 20:11:10
2 point | Link (2) | Trackback (0) | Comment (2)

Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合も...
[2243] Posted by kagahiro at 2012/12/12 11:56:21
1 point | Link (3) | Trackback (0) | Comment (1)

ベイジアンフィルタは、ナイーブベイズ(Naive Bayes)というアルゴリズムを利用して、対象となるデータを解析・学習し分類する為のフィルタで、学習量が増えるとフィルタの分類精度が上昇するという特徴をもつ。電子...
[2241] Posted by kagahiro at 2012/12/10 23:50:05
0 point | Link (1) | Trackback (0) | Comment (0)

日本電子書籍出版社協会(電書協)が加盟出版社向けに、国際的な電子書籍フォーマットであるEPUB3フォーマットの電子書籍を制作するためのガイド「電書協EPUB3制作ガイド ver.1.0」を公開した。電書協のサイトから無...
[2225] Posted by kagahiro at 2012/09/13 18:20:20
0 point | Link (2) | Trackback (0) | Comment (0)

オープンソースのシンプルな掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。ThreadPlus 1.1では、以下の機能が追加されています。ホームページ機能(index.CGI)RSS出力機能(rss.CGI)サイトマ...
[2183] Posted by kagahiro at 2012/05/15 18:06:40
0 point | Link (4) | Trackback (0) | Comment (0)

オープンソースソフトウェア紹介を中心としたITエンジニア/Webデザイナー向けブログの「MOONGIFT」が、開発者本人によるソフトウェアリリースの受け付けを開始した。掲載料は無料。リリースの送付方法は、テキスト...
[2104] Posted by kagahiro at 2011/02/14 14:41:54
0 point | Link (1) | Trackback (0) | Comment (0)

ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「CGI ...
[2075] Posted by kagahiro at 2010/11/14 23:38:58
0 point | Link (3) | Trackback (0) | Comment (0)

Texttは、単純にテキストを記録しておくためのサービス。機能はシンプルで、1つのテキストに複数の文章をタイトルつきで追加していく形で記録していくだけとなっている。テキストは公開/非公開の設定ができる。Textt
[1994] Posted by kagahiro at 2010/08/11 22:28:21
0 point | Link (2) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング TOP 10

  1. 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 使用制限無し (1 PV)
  2. 中上級者向け安全性重視のナンピンツール(半自動EA)「Million Dollar Pro」 #MT4 #有料版 (1 PV)
  3. 将棋実況チャンネル【クロノ】 - ヤフーニュースに掲載された将棋系ユーチューバー (1 PV)
  4. [FX]同一通貨ペアのポジションをまとめて決済できるMT5向けツール(EA)「Closer(クローザー) MT5」を完全無料で公開 (1 PV)
  5. 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (1 PV)

今月のアクセスランキング TOP 10

  1. 2NN 2ちゃんねるニュース速報+ナビ (3273 PV)
  2. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (488 PV)
  3. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (91 PV)
  4. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (89 PV)
  5. SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (70 PV)
  6. Million Dollar Ver 1.09向けの収益性を重視したゴールド(Gold、XAUUSD)ロングセットファイル (64 PV)
  7. 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (63 PV)
  8. 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (59 PV)
  9. [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (51 PV)
  10. 2chまとめサイト - 痛いニュース(ノ∀`) (46 PV)

アクセス統計

ディレクトリ

関連サイト