public virtual string PrefixForByteCount(string s, int maxbytecount)
{
if (s.Length<1)
{
return "";
}
int prefixcharcount = maxbytecount;
if (prefixcharcount>s.Length)
{
prefixcharcount = s.Length;
}
System.Text.Encoder encode = System.Text.Encoding.UTF8.GetEncoder();
char[] chars = s.ToCharArray(0, prefixcharcount);
long length = encode.GetByteCount(chars, 0, prefixcharcount, true);
while (length>maxbytecount)
{
prefixcharcount--;
length = encode.GetByteCount(chars, 0, prefixcharcount, true);
}
return s.Substring(0, prefixcharcount);
}