본문 바로가기

C#/예제 코드

c# 전각 or 반각 문자 전부 찾기 (콘솔)

사전지식 및 계기

전각, 반각에 따라서 아래의 링크의 내용처럼 콘솔에 맞게 포맷팅을 변경해줘야 하는 경우가 있다.

2021.12.30 - [C#/예제 코드] - c# DataTable 컬럼정보 이쁘게 출력하기 (콘솔)

 

c# DataTable 컬럼정보 이쁘게 출력하기 (콘솔)

사전지식 DataTable의 칼럼 정보를 전체적으로 망라할 수 있는 소스를 뒤져봤지만, 전각 문자에 대한 지원이 미흡하다던가.. 대충 텍스트만 출력한다든가.. 맘에 드는 것이 없어서 직접 소스를 작

self-edu.tistory.com

반각 문자는 체계가 있을까 싶어 아스키코드나 일본어 가타카나 몇 개 정도로 상정하여 🔍검색하면, 영어로 하든지 한글로 하든지 제대로 된 정보를 찾기 힘들다.

 

그리고

중요한 점은 폰트에 따라서 반각과 전각의 구분이 다른 문자도 있다.

 

그래서 0부터 전부 찾아버리는 로직을 생각해버렸다.

검지 척!


준비물

.net6.0 이상의 버전

에디터는 vs2022을 추천.


실습

※ .net6.0 ( C#10.0 에서는 Main()을 생략한다 )

using System.Text;

StringBuilder halfChars = new StringBuilder();
StringBuilder fullChars = new StringBuilder();

for (int i = 0x1b; i <= 0xFFFF; i++)
{
    char c = (char)i;
    if (Char.IsControl(c) || Char.IsSurrogate(c)) continue;
    Console.WriteLine();
    Console.Write(c);
    if (Console.CursorLeft == 1) halfChars.Append(c);
    else if (Console.CursorLeft == 2) fullChars.Append(c);
}
Console.Clear();

Console.WriteLine("----half----");
Console.WriteLine(halfChars.ToString());
Console.WriteLine("----END----");
Console.WriteLine("TOTAL : " + halfChars.Length + "chars");
System.Console.WriteLine();
Console.WriteLine("----full----");
Console.WriteLine(fullChars.ToString());
Console.WriteLine("----END----");
Console.WriteLine("TOTAL : " + fullChars.Length + "chars");

File.WriteAllText("halfwidth.txt", halfChars.ToString()); //저장.

vs2022 console


주의사항

윈도우에 내장된 콘솔에 대해서만 동작을 보장한다..

vscode 처럼 자체 콘솔창이 있다면 높은 확률로 오류가 난다. 

0부터 0xffff 까지 10초 이상 걸린다. (win 10 기준)

 

글꼴을 변경 하고싶을 때:

2022.01.01 - [C#/예제 코드] - c# 콘솔 폰트 확인 및 폰트(글꼴,크기) 변경


 

출처:

https://self-edu.tistory.com/ (myself)