中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

サロゲートペア用メソッド

黒ちゃん>まじめな処理は.NET Frameworkのstringxに任せたいと考える根性なしPGなのでサロゲートペアや結合文字はとりあえずそのまま保持をしたいと思うんですがこういったサロゲートかどうかはコードから見るしかないんでしょうか?
UCS-2文字と拡張面でsplitみたいな関数があればなぁ。

Charクラス内にいろいろとあります。

String的にはLengthが問題で、UTF16のバイト数/2しか返しません。

なので、こんなものを作ってみました。

説明要らずですね。 

public static int IsSurrogatePairLength(string value)
{
  int length = 0;
  foreach (char c in value)
  {
    if (char.IsLowSurrogate(c) == true)
    {
      //Low Surrogateの場合だけカウントしない
    }
    else
    {
      length++;
    }
  }
  return length;
}

投稿日時 : 2007年5月19日 22:09

コメントを追加

# re: サロゲートペア用メソッド 2007/05/19 22:09 中博俊

http://blogs.wankuma.com/naka/archive/2007/05/19/77341.aspx

# re: サロゲートペア用メソッド 2007/05/20 13:33 黒龍

本とだ。いろいろありますね>Charのメソッド
この辺りは意識しだすとやることいっぱいありますね。ぼちぼち試していきます。

# re: サロゲートペア用メソッド 2007/05/20 18:16 さすらい

return new StringInfo(value).LengthInTextElements;
で見られませんか?

# re: サロゲートペア用メソッド 2007/05/20 22:35 黒龍

こんなのもあるんですね。>StringInfo
勉強になります。

タイトル
名前
URL
コメント