Visual Studio デベロッパー センター > Visual Studio フォーラム > Visual Studio International Pack > Stringの不便なところを変更して欲しいというフィードバックを行いました。
質問する質問する
 

全般的な情報交換Stringの不便なところを変更して欲しいというフィードバックを行いました。

  • 2009年2月10日 2:48中博俊MVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    こんにちは中です。
    StringのStringInfoへのサポートレベル強化のお願いとしてフィードバックを行いました。


    是非このほかにも意見があればこことか、向こうに追記してもらえるとと思います。

    こんな内容です。


    1.StringInfo単位のLength命令

    var str = “あいうえお”;
    StringInfo sil = str.StringInfoLength;
    var len = str.Length;

    strが合成文字、サロゲートペアの場合silとlenは=にならない。

    2.StringInfo単位のインデクサ

    var str = “あいうえお”;
    str.GetStringInfoCharacters[3]

    strが合成文字、サロゲートペアを含む場合ただのインデクサとは=にならない。

    3.IEnumerableの提供

    var str = “あいうえお”;
    from si in str.GetStringInfoEnumerable select si.String;

    strが合成文字、サロゲートペアを含む場合だと結果が変わる

    4.StringInfoのEndsWithを提供して欲しい

    var str = “あいうえお”;
    StringInfo si = new StringInfo();
    var se = str.EndsWith(si);

    5.CharのEndsWithをpublicに変更して欲しい

    str.EndsWith('あ’) を出来るようにして欲しい。


    中博俊 @ わんくま同盟 MSMVP Visual Studio C# Since 2004/04-2008/03, MCP

すべての返信

  • 2009年2月12日 9:14biac ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     コードあり
    1.StringInfo単位のLength命令

    var str = “あいうえお”;
    StringInfo sil = str.StringInfoLength;
    var len = str.Length;

    strが合成文字、サロゲートペアの場合silとlenは=にならない。

    ※ 全部フォローするのはたいへんなので、 とりあえず最初のだけ。

    ひとつめの提案は、 現状ではこのように書ける…
    StringInfo si = new StringInfo("あいうえお");
    int sil = si.LengthInTextElements;
    …のだけれども、 String そのものに取り込んで欲しい、 ということですよね。

    つまり、
    int sil = "あいうえお".LengthInTextElements;
    みたいな書き方ができるようにしてほしい、 と。

    また、 「StringInfo単位」 と言われていますが、 StringInfo クラスのドキュメントの言い方を借りれば、 それは実は「単一の文字として表示されるテキストの単位、つまり書記素としてテキスト要素」 のことですよね。

    ここで追加の提案ですが、 StringInfo クラスでは、 「単一の文字として表示されるテキストの単位、つまり書記素としてテキスト要素」 を表現するために String を使っていますが、 専用の 「単一の文字として表示されるテキストの単位、つまり書記素としてテキスト要素」を表すクラスがあるべきだと思います。


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]
  • 2009年2月17日 0:37中博俊MVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    >ここで追加の提案ですが、 StringInfo クラスでは、 「単一の文字として表示されるテキストの単位、つまり書記素としてテキスト要素」 を表現するために String を使っていますが、 専用の 「単一の文字として表示されるテキストの単位、つまり書記素としてテキスト要素」を表すクラスがあるべきだと思います。

    たしかにそうですね。
    UTF-16のCharではなく、本当の意味でのCharが欲しいですね。

    中博俊 @ わんくま同盟 MSMVP Visual Studio C# Since 2004/04-2008/03, MCP
  • 中 さん、biac さん こんにちは

    こちらの件ですが、1から3までの要件を満たす TextElements というクラスを先日BetaになったInternational Feature Packの読み仮名フレームワークに入れました。

    描画単位の文字を表現するクラスを作ることも考えないわけではないのですが、現在の .NET Framework では、描画系のAPIは String 単位で引数を渡しますので、そこから離れることは現状避けており、戻り値は Stringとして扱っています。

    もしよろしければ、ご感想をいただければと思っております。


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspxをご覧ください。