指定のバイト数で文字列をカットする

バイト長で制限したいときもある(四)。でつかったCutByteLengthメソッドを書いてなかったので、載せておく。
using System;

namespace TawamureDays {

public static class Utils {

/// <summary>
/// 指定された文字列の指定バイト長より右の文字列を切り捨てます。<br/>
/// </summary>
/// <param name="str">元文字列</param>
/// <param name="length">バイト長(1以上を指定)</param>
/// <returns>切捨て後の文字列</returns>
public static string CutByteLength(string str, int length) {
if (Utils.GetByteLength(str) <= length) {
//指定したバイト数より短い場合のみ、そのまま返します。
return str;
}

if (length <= 0) {
return string.Empty;
}

// 文字の配列に分解して長さを確認します。
string buff = null;
var sb = new System.Text.StringBuilder();

foreach (char ch in ToString(str).ToCharArray()) {
buff = sb.ToString();
sb.Append(ch);

if (Utils.GetByteLength(sb.ToString()) > length) {
return buff;
}
}
return sb.ToString();
}
}
}
.NET1.1の頃から使っているので、なんともベタなロジックだな。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m