- 2015/2/1 07:06
VBのLeftBやRightBに相当するメソッドを作成しました。
以前に投稿した「SubstringByteメソッド」を使用しますので、切り詰めた部分文字列が文字化けする場合は、文字化けした文字を除去します。
●左から切り詰める場合
StringUtility utility = new StringUtility();
utility.TruncateByteLeft("1あいうえお", 4);
実行結果:”1あ”
●右から切り詰める場合
StringUtility utility = new StringUtility();
utility.TruncateByteRight("1あいうえお", 4);
実行結果:”えお”
以下のエリアではTruncateByteLeftメソッドとTruncateByteRightメソッドを実際に動かした時の挙動を確認できます。
※実行結果の半角スペースは「¸」で表します。
TruncateByteLeftメソッド、TruncateByteRightメソッドのソースコードは以下になります。
/// <summary>
/// 文字列を指定されたバイト長に左側から切り詰めます
/// </summary>
/// <param name="target">対象の文字列</param>
/// <param name="lengthByte">バイト長</param>
/// <returns>指定されたバイト長に切り詰めた文字列</returns>
/// <remarks>
/// <para>文字列が指定されたバイト長に満たない場合は、成型せずに返します</para>
/// <para>切り詰めた文字列の末尾に全角文字途中の要素が混入している場合は除去します</para>
/// </remarks>
public string TruncateByteLeft(string target, int lengthByte)
{
// 対象の文字列のバイト長が指定されたバイト長以下の場合
if (GetByteCount(target) <= lengthByte)
{
return target;
}
return SubstringByte(target, 0, lengthByte);
}
/// <summary>
/// 文字列を指定されたバイト長に右側から切り詰めます
/// </summary>
/// <param name="target">対象の文字列</param>
/// <param name="lengthByte">バイト長</param>
/// <returns>指定されたバイト長に切り詰めた文字列</returns>
/// <remarks>
/// <para>文字列が指定されたバイト長に満たない場合は、成型せずに返します</para>
/// <para>切り詰めた文字列の先頭に全角文字途中の要素が混入している場合は除去します</para>
/// </remarks>
public string TruncateByteRight(string target, int lengthByte)
{
// 対象の文字列のバイト長を取得
int targetByteCount = GetByteCount(target);
// 対象の文字列のバイト長が指定されたバイト長以下の場合
if (targetByteCount <= lengthByte)
{
return target;
}
return SubstringByte(target, targetByteCount - lengthByte, lengthByte);
}
※
Clipボタンをクリックすると、「StringUtility」というクラスがコピーされます。このソースを「StringUtility.cs」ファイルにコピーするとすぐご利用いただけます。