/// <summary>
/// 指定バイト数文字切取長さ
/// </summary>
/// <param name="PMoJi">文字列</param>
/// <param name="PLength">バイト数</param>
/// <returns>指定バイト文字</returns>
public static string GetMoJiKiriTori(string PMoJi, int PLength) {
//日本語ファイル名が文字化けする
Encoding encoding = Encoding.GetEncoding(932);
StringBuilder sb = new StringBuilder();
//切取バイト数
int totalLength = 0;
foreach (char MoJiChar in PMoJi) {
//指定した文字配列から文字のセットをエンコードすることによって生成されるバイト数を計算します
int size = encoding.GetByteCount(new char[] { MoJiChar });
//切取バイト数>指定バイト数の場合、Breakを実行する。
if (totalLength + size > PLength) {
break;
}
//指定した文字配列を追加する
sb.Append(MoJiChar);
//切取バイト数増す
totalLength += size;
}
指定バイト文字を返します
return sb.ToString();
}
/// <summary>
/// バイト対応半角全角判定処理
/// 引数で渡された文字列の指定改位置をはさんで全角コードが
/// あったら、その直前位置を引数に設定する。なければ何もしない。
/// </summary>
/// <param name="PMoji">文字列</param>
/// <param name="PLength">バイト数</param>
/// <returns> 正常処理なら「true」を、異常終了なら「false」を返却する。 </returns>
public static bool GetIsMBHD(string PMoji, int PLength) {
//日本語ファイル名が文字化けする
Encoding encoding = Encoding.GetEncoding(932);
//切取バイト数
int totalLength = 0;
foreach (char MoJiChar in PMoji) {
//指定した文字配列から文字のセットをエンコードすることによって生成されるバイト数を計算します
int size = encoding.GetByteCount(new char[] { MoJiChar });
//切取バイト数=指定バイト数の場合、正常処理なら「true」を実行する。
if (totalLength + size == PLength) {
return true;
}
//切取バイト数増す
totalLength += size;
}
return false;
}
/// <summary>
/// 文字列の部分文字列または動的配列のセグメントを返します
/// </summary>
/// <param name="PMoji">>文字列</param>
/// <param name="PStartLength">開始文字列バイト数</param>
/// <param name="PLength">切取バイト数</param>
/// <returns>指定バイト文字</returns>
public static string GetCopyString(string PMoji, int PStartLength,int PLength) {
//日本語ファイル名が文字化けする
Encoding encoding = Encoding.GetEncoding(932);
StringBuilder sb = new StringBuilder();
//切取バイト数
int totalLength = 0;
foreach (char MoJiChar in PMoji) {
//指定した文字配列から文字のセットをエンコードすることによって生成されるバイト数を計算します
int size = encoding.GetByteCount(new char[] { MoJiChar });
//切取バイト数>=指定バイト数の場合、指定した文字配列を追加する
if (totalLength + size >= PStartLength) {
PLength = PLength - size;
if (PLength >= 0) {
sb.Append(MoJiChar);
}
}
//切取バイト数増す
totalLength += size;
}
//指定バイト文字を返します
return sb.ToString();
}