안녕하세요. IT 김군입니다.


C# / .NET 정규표현식이 구글링해서 나오는게 많이 없더군요..


그래서 혹시나 필요할지 몰라 메모합니다.


정규 표현식에 사용되는 특수 문자

'.'  => 점

임의의 한 문자를 의미합니다.

a.c -> abc, aec, avc, …

.us -> bus, cus, dus, …

'*'

바로 앞의 문자가 없거나 하나 이상인 경우

s*e -> e, se, see, ssse, …

abc* -> ab, abc, abcc, abccc, …

h*im -> im, him, hhim, hhhim, …

'+'

바로 앞의 문자가 하나 이상

s+e -> se, sse, ssse, …

'?'

바로 앞의 문자가 없거나 하나뿐인 경우

th?e -> e, the 두가지 표현이 유일함

'^'

바로 뒤의 문자열로 시작

^The.. 뒷부분부터 공백까지 검사. -> The girl is, Theather

^a?bc -> bc, abc, …

^.e -> he, me, request, settle, …

^s.e?.. E는 나와도되고 안나와도 됩니다. -> sa, sae, sb, sbe, …

'$'

바로 앞의 문자열로 종료

a?bc$ -> eeabe, seebc, bc..

+.e$ -> onthetoe, bctae, appetittle, …

s?c+$ -> e, se, ee, eee, seee, seee, …

'[ ]'

[ ] 안에 있는 문자 중 하나(범위의 경우 '-'로 지정합니다.)

[ab]cd -> acd, bcd, …

[a-z] -> 알파벳 소문자

[a-zA-Z] -> 알파벳

[0-9] -> 숫자

ag[a-z] -> aga, agbcd, agzzz, …

^ab[cd]ef -> abcef, abdef, …

^[a-zA-Z] -> 영문자로 시작

^[가-힣] 한글로 시작해야 할 때

[a^-zA-Z0-9] -> '^' 표시가 대괄호 안으로 들어갈 경우 제외의 의미가 됩니다. 부정의 의미. ->영문자나 숫자로 시작할 수 없습니다.

[a-zA-Z0-9]$ -> 영문자나 숫자로 종료

"[가-힣]" -> 한글 완성형만 가능합니다. "ㅋㅋ", "ㅎㅎ" 같은 구문은 불가능합니다.

"[abc]" -> abc중 하나라는 뜻 -> c#문법으로 if("a" || "b" || "c")와 같음.

'{ }'

{ } 앞의 문자나 문자열의 출현 횟수, Schema에서 min / maxoccur과 같은 개념

a{2}b -> aab, … -> a가 꼭 2회 나와야 함

a{2, }b -> aab, aaab, aaaab, … -> a가 2회 이상 나와야 함

a{2, 3}b -> aa, aaab -> a가 2회~3회 나와야 함

'( )'

( )안에 있는 문자를 그룹화

a(bc){2} -> abcbc -> a 다음 bc가 2회 나와야 함

a(bc)* -> abcbcbcbc -> a 다음 bc의 출현이 무한대로 가능 함

'|'

or 연산자

영어로만 아이디를 만들라 -> [a-zA-Z]+ 공백없는 영어단어

He|She -> he, she is..

(He|She)is -> Heis, Sheis

특수문자 사용

^ [] $ () | * + ? {} \

앞부분에 \를 붙여서 사용합니다.

\*+ -> *가 하나 이상 포함된 패턴.. -> *나 **나 ***이 무한대로 가능

\d : 정수

\d{2, 3} - / d{3,4} - / d{4} : 전화번호 찾는 정규식

\D : 숫자가 아닌 나머지 모두

\w : [a-zA-Z0-9]의 줄임 표현

\W : [^a-zA-Z0-9] 영문자와 숫자만 아니면 됨.

\s : 공백

\S : 공백이 아닌 나머지



감사합니다.


WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT 김군입니다.


핸드폰 번호를 하이픈 없이 입력 받아 하이픈을 넣어서 사용하여야 할 때 하이픈 넣는 방법에 대해 알아보도록 하겠습니다.


많은 방법이 있지만 저는 제일 쉽게 접할 수 있는 Substring으로 쪼개서 "-"를 중간중간 더하는 방식으로 진행하였습니다.


0111234567과 같은 10자리 번호와 01012345678과 같은 11자리 번호에 대해서 처리하였습니다.


저는 정규식으로 전화번호가 맞는지 먼저 체크하고 이 코드를 타기 때문에 가볍게 10인지 아닌지만 구분했지만


if / else 문의 조건을 조금만 수정하면 더욱 더 완벽하게 처리하실 수 있으실거에요.


해당 소스는 아래와 같습니다.


public void phoneNumHyphen(){
    string phone = "0110000000";
    string str_phoneNumHyphen;

    string[] phoneNumSplit = new string[3];

    if (phone.Length == 10)
    {
        phoneNumSplit[0] = phone.Substring(0, 3);
        phoneNumSplit[1] = phone.Substring(3, 3);
        phoneNumSplit[2] = phone.Substring(6, 4);
    }
    else
    {
        phoneNumSplit[0] = phone.Substring(0, 3);
        phoneNumSplit[1] = phone.Substring(3, 4);
        phoneNumSplit[2] = phone.Substring(7, 4);
    }

    str_phoneNumHyphen = phoneNumSplit[0] + "-" + phoneNumSplit[1] + "-" + phoneNumSplit[2];

    MessageBox.Show("@@ PhoneNum : " + str_phoneNumHyphen);
}


위 소스로 빌드하면 아래와 같은 결과를 얻을 수 있습니다.




추가!!!!!!!!


더 간단한 방법이 있었습니다.


private void phoneNumHyphen()
{
    string phoneNum= "01012341234";
    string phoneNumHyphen;

    if (phoneNum.Length == 11)
    {
        phoneNumHyphen = phoneNum.Insert(3, "-");
        phoneNumHyphen = phoneNumHyphen.Insert(8, "-");
    }
    else
    {
        phoneNumHyphen = phoneNum.Insert(3, "-");
        phoneNumHyphen = phoneNumHyphen.Insert(7, "-");
    }
    MessageBox.Show("@@ PhoneNum : " + phoneNumHyphen);
}


잘못된 부분이나 궁금하신 점 댓글주세요.


도움이 되셨다면 공감 한 번씩만 부탁드리겠습니다.


감사합니다.



WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


MAC OS X를 사용하면서 로그인 할 때마다 제 계정 옆에 방문사용자가 있는 것이 가끔 대충 누르다보면 잘못눌리기도 하고 매우 불편하더군요.


방문사용자를 제거하는 방법에 대해 알아보도록 하겠습니다.


우선 방문사용자가 있는 로그인 화면입니다.




해당 화면에서 '방문 사용자'를 제거해보도록 하겠습니다.


기존에 사용하시던 본 계정으로 로그인 하신 후 환경설정에 들어갑니다.







시스템 환경설정 ---> 사용자 및 그룹


위 항목에 들어가시면 위 화면과 같이 나올 것입니다.


그럼 위 화면에서 빨간박스가 쳐져있는 곳과 같이 좌측 하단 자물쇠를 클릭하여 잠금을 풀어주신 후


좌측 중간 쯤 메뉴에 있는 '방문 사용자'를 눌러주시면 아래 화면과 같이 나타납니다.





위 화면에서 빨간 박스가 쳐져 있는 '방문자가 이 컴퓨터에 로그인하도록 허용'에 되어있는 체크를 해제해줍니다.


그 다음 다시 자물쇠를 클릭하여 잠금을 해주시면 작업이 완료됩니다.


위 작업을 모두 거친 후 재부팅을 해보니 아래와 같이 '방문 사용자'는 제거되고 나타나지 않습니다.




궁금하신 점이나 잘못된 부분 있으면 댓글주세요.


도움이 되셨다면 공감 한 번 부탁드립니다.


감사합니다.




WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


오늘은 C# / WPF 에서 생성한 컨텐츠를 보이기 / 숨기기 (Visible / Hidden)에 대해 알아보도록 하겠습니다.


button이라는 Name을 가진 Button을 생성했다고 가정 시

WinForm에서는
button.visible = true;
button.visible = false;

위와 같은 방식으로 진행했었는데 WPF에서는 되지 않더라구요...


그래서 찾아보니 아래와 같이 하시면 될 것 같습니다.

WPF에서는
button.Visibility = Visibility.Visible;
button.Visibility = Visibility.Hidden;


궁금하신 점이나 잘못된 점 있다면 댓글주세요.


감사합니다.


WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


오늘은 C# / WPF를 활용한 CheckBox 사용법과 TextBox (Content) Enable / Disable 연계에 대해 알아보도록 하겠습니다.


크게 방법은 두 가지가 있습니다.


1. WPF xaml 파일에서 코딩



이렇게 TextBox와 CheckBox를 각각 생성하여 TextBox에 이벤트를 걸어주는 방법이 첫 번째 입니다.


<Textbox Name="tb_test" Width="100" Height="30"

IsEnabled="{Binding ElementName=cb_test, Path=IsChecked}">

</Textbox> <Checkbox Name="cb_test" Width="100" Height="30">체크박스</Checkbox>



xaml 파일에서만 완료 가능합니다.




2. WPF에서 View를 만들고 C#에서 코딩


- WPF xaml 파일 소스



<TextBox Name="tb_test" Width="100" Height="30"/>
<CheckBox Name="cb_test" Width="100" Height="30" 
    Checked="cb_test_Checked" Unchecked="cb_test_Unchecked">체크박스</CheckBox>



- cs 소스



private void cb_test_Checked(object sender, RoutedEventArgs e)
{
      tb_test.IsEnabled = true;
      Console.Write("@@ Check : " + cb_test.IsChecked);
}

private void cb_test_Unchecked(object sender, RoutedEventArgs e)
{
      tb_test.IsEnabled = false;
      Console.Write("@@ Check : " + cb_test.IsChecked);
}




위 두 가지 방법으로 작업하시면 아래 보시는 것과 같이 체크박스를 활용해 TextBox를 활성화 비활성화의 컨트롤을 하실 수 있습니다.




감사합니다.


WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


이번에는 WPF에서 예, 아니오 (YesNo) 메시지박스를 출력하는 방법에 대해 알아보도록 하겠습니다.



소스는 위와 같습니다.


단순하게 메시지박스를 띄우시기만 한다면

MessageBox.Show("내용","타이틀",MessageBoxButton.YesNo);

까지만 작성하시면 되는데요.


if문 뒤에 조건은 Yes를 클릭하였을 때와 No를 클릭하였을 때의 이벤트를 구분하기 위해서 해 놓은 것입니다.

- C#의 경우
DialogResult.Yes

- WPF의 경우
MessageBoxResult.Yes

위와 같이 상황에 맞추어 사용하시면 됩니다.


감사합니다.



WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


아래는 C#으로 폴더를 생성하는 방법입니다.


string folderPath = "D:/createFolder";
DirectoryInfo di = new DirectoryInfo(folderPath);

// 만약 폴더가 존재하지 않으면
if(di.Exists == false)
{
   di.Create();
}


위의 간단한 소스로 폴더를 생성하실 수 있습니다.


변수 folderPath에 생성할 폴더의 경로를 string으로 넣어주신 후에 DirectoryInfo를 활용하여 폴더의 유무를 체크한 후


폴더를 생성하는 소스입니다.


감사합니다.


WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,

안녕하세요. IT김군입니다.


오늘은 WPF에서 투명 창 만드는 법에 대해 메모해보도록 하겠습니다.


투명창 만드는 방법은 매우 간단합니다.


아래 보이는 것과 같이 3개의 설정값만 넣어주면 됩니다.





WindowStyle="None"
AllowsTransparency="True"
Background="{x:Null}"


위 3개의 설정을 넣어주신 후 빌드를 해보시면 아래 화면과 같이 버튼만 떠있는 화면을 보실 수 있습니다.






감사합니다.






WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,