C#によるLeftBについて

VBのLeftB関数は文字列をバイトデータとして左から指定した文字数の文字列を返します。半角文字は1バイト、全角文字は2バイトになります。 C#には、LeftB関数がありません。そこで、独自padding関数を作成します。

LeftB関数

/// -------------------------------------------------------------------------
/// <summary>文字列の左端から指定したバイト数分の文字列を返します。</summary>
/// <param name="cutString">取り出す元になる文字列<param>
/// <param name="byteSize">取り出すバイト数</param>
/// <returns>左端から指定されたバイト数分の文字列</returns>
/// -------------------------------------------------------------------------
public static string LeftB(string cutString, int byteSize)
{
	// Shift_JISに変換する
	System.Text.Encoding hEncoding
	 = System.Text.Encoding.GetEncoding("Shift_JIS");
	byte[] btBytes = hEncoding.GetBytes(cutString);
	// 指定バイト数<文字列のバイト数の場合、パラメータの文字列をそのまま戻す
	if (btBytes.Length < byteSize)
	{
		return cutString;
	}
	// 指定バイト位置にある文字の全角・半角判断
	if ((btBytes[byteSize-1] >= 0x80 && btBytes[byteSize-1] <= 0x9F) ||
		(btBytes[byteSize-1] >= 0xE0 && btBytes[byteSize-1] <= 0xFF))
	{
		// 全角(2バイト)の場合、1バイト分が不足するため、対象外とする
		return hEncoding.GetString(btBytes, 0, byteSize - 1);
	}
	else
	{
		return hEncoding.GetString(btBytes, 0, byteSize);
	}
}

inserted by FC2 system