/// <summary>
/// 裁减字符串
/// </summary>
/// <param name="OriginalString">被裁减字符串</param>
/// <param name="BytesAfterCutLength">需保留的字节数</param>
/// <returns></returns>
public string GetSubstring(string OriginalString, int BytesAfterCutLength)
{
string OptimizedText = OriginalString;
byte[] OriginalTextByte = Encoding.Default.GetBytes(OriginalString);
if (OriginalTextByte.Length > BytesAfterCutLength)
{
int Left = BytesAfterCutLength / 2;
int Right = BytesAfterCutLength;
Left = Left > OriginalString.Length ? OriginalString.Length : Left;
Right = Right > OriginalString.Length ? OriginalString.Length : Right;
while (Left < Right - 1)
{
int Middle = (Left + Right) / 2;
if (Encoding.Default.GetBytes(OriginalString.Substring(0, Middle)).Length > BytesAfterCutLength)
{
Right = Middle;
}
else
{
Left = Middle;
}
}
byte[] RightValue = Encoding.Default.GetBytes(OriginalString.Substring(0, Right));
if (RightValue.Length == BytesAfterCutLength)
{
OptimizedText = OriginalString.Substring(0, Right);
}
else
{
OptimizedText = OriginalString.Substring(0, Left);
}
}
return OptimizedText;
}
05-22