/// <summary>
/// 中英文字(Emoji表情)符串截取方法
/// </summary>
/// <param name="str"></param>
/// <param name="length"></param>
/// <param name="replace"></param>
/// <returns></returns>
public static string Substring(string str, int length, string replace="...")
{
if (string.IsNullOrWhiteSpace(str)) return "";
if (length <= 0) return str;
int len = 0;
int k = 0;
byte[] b;
StringBuilder strBuilder = new StringBuilder();
TextElementEnumerator enumerator = StringInfo.GetTextElementEnumerator(str);
while (enumerator.MoveNext())
{
if (k < length)
{
b = Encoding.Default.GetBytes(enumerator.Current.ToString());
len = b.Length;
if (len >=4)
k += len;//Emoji表情
else if (len > 1)
k += 2;//中文
else
k += 1;//英文
strBuilder.Append(enumerator.Current);
continue;
}
else
{
strBuilder.Append(replace);
}
break;
}
return strBuilder.ToString();
}
C# 中英文字(Emoji表情)符串截取方法
于 2018-07-25 14:06:52 首次发布