반응형

C# Tips!! 한글과 영어가 섞인 경우의 Format 정렬

 

C#에서 문자열 출력시, 한글 한글자는 영어 2글자 분의 자리를 차지한다.

따라서 일반적인 정렬 방식을 쓰게 되면, 한글과 영어의 차이 때문에 정렬이 안된다.

이럴 때는 바이트수를 계산해서 출력해 주어야 자리수를 맞출 수 있다.

가령, 한글이냐 영어냐에 상관 없이 영어 열자리 간격에 맞추어 오른쪽 정렬로 출력하려면,

다음과 같이 하면 된다.


String strToPrint = "출력할 문자열";

int padLen = 10 - Encoding.Default.GetBytes(strToPrint).Length;

Console.WriteLine("{0}", "".PadLeft(padLen) + strToPrint);


또는, 다음과 같은 방법도 있다.

String strToPrint = "출력할 문자열";

byte[] byte1 = Encoding.Default.GetBytes(strToPrint  + "          ");

byte[] byte2 = new byte[10];

Array.Copy(byte1, byte2, 10);

Console.WriteLine("{0}", Encoding.Default.GetString(byte2));

반응형

+ Recent posts