[깅깅의 C# 독학] 한글 받침에 따라 메세지 출력하기 +추가
관련글 링크 : https://dubleging.tistory.com/22
[깅깅의 C# 독학] 11.C# - 텍스트박스 , 리스트박스 + 한글 받침에 따라 메세지 출력하기
이번엔 텍스트박스, 리스트박스에 대해 정리하겠다. 어렵지 않으니 빠르게 훑어보자! [텍스트박스(TextBox)] 텍스트박스는 사용자가 문자를 입력할 수 있는 박스이다. using System; using System.Windows.For
dubleging.tistory.com
전 글에서 쓴 한글 받침에 따라 메세지를 출력하는 일명 PropMessage를 더욱 간편하게 해보았다. 전 글에서는 테스트를 하는 메인 클래스 이름을 PropMessage라고 하고 그 기능을 PropCheck 라고만 했는데 그 이유는 받침이 있는지 없는지만 체크해주지 텍스트를 반환하지 않기 때문이였다.
그래서 좀 더 다듬어서 기능 자체에 PropMessage라는 이름을 붙이자! 해서 해봤는데 생각보다 더 간단하게 되서 바로 적는다.
using System;
using System.IO;
class PropMessage
{
string[] letter;
public PropMessage()
{
string path = @"D:\1.깅깅\포스팅_깅깅의 C# 독학\PropMessage_class\PropMessage_class\한글 문자 무받침 모음.txt";
string txt = File.ReadAllText(path);
letter = txt.Split(',');
}
public string ChangeLetter(string input, string sub1, string sub2)
{
if (input == "")
{
return "";
}
string last = input.Substring(input.Length - 1);
for (int i = 0; i < letter.Length; i++)
{
if (letter[i] == last)
{
return input + sub2;
}
}
return input + sub1;
}
}
클래스는 이렇게 수정했다. 큰 구조는 딱히 바뀌지 않았다. 눈에 띄는 변화는 메서드가 받는 인수다. 입력값과 받침 있을 때의 조사, 받침이 없을 때의 조사를 input, sub1, sub2로 받아 대조한 뒤 맞는 조사를 붙여 반환한다. 실 사용은 아주 간단해졌다.
PropMessage pmg = new PropMessage();
lb.Text = pmg.ChangeLetter(tmp.Text, "으로", "로") + " 하시겠습니까?";
오브젝트를 생성해주고 메서드를 텍스트에 바로 호출하면 된다.
▲요랬던 코드가
tb.KeyDown += (sender, e) =>
{
TextBox tmp = (TextBox)sender;
if (e.KeyCode == Keys.Enter)
{
lb.Text = pmg.ChangeLetter(tmp.Text, "으로", "로") + " 하시겠습니까?";
tb.Text = String.Empty;
}
};
}
}
▲요롷게 바뀜!
+난 오브젝트 생성을 다 이벤트 핸들러 밖에다가 처리해줬다. 왜냐하면 오브젝트 생성할 때 컨스트럭터에 의해서 텍스트파일을 읽고 배열에 하나하나 글자를 넣기 때문이다. 만일 이벤트 핸들러 안에 생성을 하면 텍스트박스에 입력을 할 때마다 매번 파일 읽고 배열에 글자를 넣는 작업을 할 것이다. 크게 무리가 안갈지는 몰라도 뭔가.. 음.. 계산 낭비? 라는 생각이 들어 밖에서 한 번만 글자 배열을 뽑아주고 메서드에는 글자 대조, 변환만 작업할 수 있도록 했다.