SMS전송등을 할때 보통 문자열 길이를 바이트 기준으로 제한해야하는데, 그냥 바이트단위로 잘라버리면, 한글이나 특문같이 2바이트이상의 문자는 중간이 잘리면서 깨지는 문제가 발생함. 이에 대비해 끝 문자가 바이트제한에 걸치는경우 통채로 제거해줘야 하는데,

검색해보니 반복문으로 문자 하나하나 세고앉아있길래 최대한 간결한 절차를 만듬.


윗쪽은 초과한 문자열에 대한 줄임표를 넣을때는 절케 정적인 코드로 통합시키면 처리에 필요한 코드가 최소화된다는 의미로 넣음


static byte[] byteEllipsis(string str, int byteCount)

{

var bin = UTF8.GetBytes(str);

if (bin.Length <= byteCount)

return bin;

str = UTF8.GetString(bin, 0, byteCount)[..^2] + "..";//.은 UTF8에서 1byte라 2char랑 맞 바꿔도 넘을일 없음

return UTF8.GetBytes(str);

}

static string byteLimit(string str, int byteCount, Encoding e)

{

var bin = e.GetBytes(str);

if (bin.Length <= byteCount)

return str;//return e.GetString(bin);

var cut = e.GetString(bin, 0, byteCount);

int end = cut.Length - 1;

return str+ == cut+ ? cut : cut[..^1];

}