Как рассчитать ширину отображения строки в консольной программе c # (ядро .net)?
var str = "hello你好こんにちは";
var length = str.Length; // 12
var width = Str.Width(str); // expected width: 19
public static int Width(string str)
{
var length = 0;
for(var i = 0; i < str.Length; i++)
{
byte[] bytes = Encoding.Default.GetBytes(str.Substring(i,1));
if(bytes.Length > 1)
{
length += 2;
}
else
{
length += 1;
}
}
return length;
}
Я не могу гарантировать, что это даст правильные результаты на всех языках.
Итак, что я должен сделать, чтобы эта функция работала на всех языках? как функция mb_strwidth
в PHP.