截取字符串方法(C# C/S)
2012-06-20 18:49
239 查看
/// <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();
}
/// 指定バイト数文字切取長さ
/// </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();
}
相关文章推荐
- C#几种截取字符串的方法小结
- c#中字符串截取使用的方法
- c# 截取中英文字符串的简洁方法
- js 截取字符串的方法 - C# 正则判断数字及截取字符
- c#中字符串截取使用的方法(转)
- C#截取字符串的方法汇总
- 向C#的String类添加按字节截取字符串的扩展方法
- C# 几种截取字符串的方法小结
- C#截取指定长度中英文字符串方法
- C#截取指定字符串的方法
- C#实现中英文混合字符串截取的方法
- C# 几种截取字符串的方法
- c# 超长字符串截取固定长度后显示...(超长后面显示点点点) 通用方法
- 字符串截取固定长度的方法(C#)
- C#截取指定长度中英文字符串方法
- C#截取字符串(String.Substring方法)
- C#截取指定长度中英文字符串方法
- C#截取字符串长度方法
- C#_字符串截取Substring实例方法
- C#截取字符串(String.Substring方法)