ナビゲーション リンクのスキップトップページ > コードの破片から > 文字列をバイト数で制限する
▼ 文字列をバイト数で制限する ▼

  例えば「ここから始めよう FooPah!」はシフトJISでは何バイトかフォームのタイトルバーに表示させたい場合は以下のようなコードになります。

  this.Text = Encoding.GetEncoding(932).GetByteCount("ここから始めよう FooPah!").ToString();

  バイト数で文字数を制限するのは、文字数をカウントして文字制限するのと違い若干工夫が必要です。例えばUnicodeでは半角も全角も2バイトとして表現されますから、こんな面倒な方法でカウントしなくても「文字数/2=バイト数」となりますので簡単です。しかしシフトJISの場合、半角1バイト、全角2バイトとなります。10バイト分の文字列を取得しようとしたときには、この様になります。

文字列をバイト数で制限する

♣ 前提条件

    TextBoxコントロールのTextChangedイベントを用意します。
    EncodingクラスはSystem.Text名前空間から発生しています。


♣ コード

private void textBox1_TextChanged(object sender, System.EventArgs e)
{
    this.Text= Encoding.GetEncoding(932).GetByteCount(this.textBox1.Text).ToString();
    if(Encoding.GetEncoding(932).GetByteCount(this.textBox1.Text) > 10)
    {
        TextC();
    }
}

private void TextC()
{
    if(this.textBox1.Text.Length > 11)
    {
        this.textBox1.Text = this.textBox1.Text.Substring(0,10);
    }

    this.textBox1.Text= this.textBox1.Text.Remove(this.textBox1.Text.Length-1,1);
    this.textBox1.Select(this.textBox1.Text.Length,0);
}


♣ UIサンプル


  まずはMaxLengthプロパティを利用して想定される最大文字数まで入力される文字数を制限しておくのが一般的かつ合理的です。この記述によって処理時間を削減させることが出来ます。

Continue
ナビゲーション リンクのスキップトップページ > コードの破片から > 文字列をバイト数で制限する

2008年ですね。[1]
♥ 2008年01月01日 00:00:00

自由なスレ[3]
♥ 2007年09月22日 20:51:58

2007年ですね。[1]
♥ 2007年01月01日 00:00:00

こみゅぷらす発足[1]
♥ 2006年12月01日 12:01:23

TechED2006 日記[5]
♥ 2006年09月11日 18:44:51


RSS : FooPah!の更新情報
RSS : 掲示板全体の投稿情報
Copyright(C)2001-2008 FooPah!, All rights reserved.