통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 주민 12892 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 강좌&팁
 Dictaionarly의 Key의 upper와 trim  | WinForm Program 2018-09-27 오전 10:58:51
 pearly  pearly님께 메시지 보내기pearly님을 내 주소록에 추가합니다.pearly님의 개인게시판 가기 번호: 2073 추천:0  / 읽음:1,773

아침에 출근해 보니 저번주에 작성했던 모든 코드들이 변경이 되어 있다.

 

어떻게?

 

이렇게 말이다. 

난 개인적으로 줄을 맞추는건 좋다고 하지만.. 문제는 저 trim이다. 괜한 루프(?)를 한번쯤 더 돌아야 하는것 같은 개념이라고 할까?. 모르긴 몰라도..trim에서는 반드시  char를 루프를 돌면서 다시 스페이스를 제거할것이라.. 뭐 신이 아닌 이상 별수가 있겠니?

 

여하튼 나에게 문제는 저 trim이 안보였으면 하는데 이 코딩을 만드는 사람들의 취향이란게 어찌할수가 없다는 것이다.

 

하여간 어쩔수 없는 이런상황속에서 잠시 저 trim을 없게하는 코드를 살짝히 짜 보려 한다.

 

Hashtable 이나  Dictionary의 경우에 IEqualityComparer 를 생성자에 받도록 되어 있다. 이것은 즉 내가 원하는 형태로 키값의 비교를 처리할수 있다는 이야기 이고. 

여기 클래스에서 원하는 형태로 대소문자의 동일처리와, trim의 처리를 하면 된다는 것이다.

 

이왕 하는 김에 hashtable의 object로 키를 처리하는것도 지네릭으로 처리해서 Dictaionary로 처리를 해보자.

 

이렇게 적어주면 되는데 여기서 아래의 코드에 보면  obj = obj.ToUpper().Trim();

같은 이 코드가 키값을 넣어줄때 대문자 시키고 trim을 시키는 코드이다.

 

이걸 다시금.. 처리해보면 말이다.

 

이런식의 살짝이 생성자에 넣어주기만 하면.. 이제부터는 쉽게 처리가 가능하다.

이렇게 말이다. 어떻게 넣어두 이젠 저 3줄은 하나의 키값으로 인식이 될것이다.

 

 

Hashtable로 꼭 하겠다는 고집있는 사람이 가끔 있을테니 어쩔수 없이 마저 설명을 해주면

(그정도는 알아서 해야쥐 말이야 -_-;;)

 

앞에 이야기 했듯이  생성자에 적어주던지 아니면 개체를 상속받아서 새로운 개체의 생성자에 넣어줘도 좋다. 

 

하지만 살짝이 에러가 날것인데 그 이유는 위에 만든건 오로지 key값을 string에 한정했지만 hashtable은 key가 object로 되어 있기 때문이다. 그러니 클래스도 살짝이 변경해서 아래와 같이해보자.

 

요렇게 말이다.

 

하지만.. 위의 경우들에 Dicationary도 그리고 Hashtable도 문제가 존재하는데 그건..

들어가는 key값이 내가 원하는게 아니란 것이다.

스페이스가 들어간 상태이거나 또는 소문자 이거나 하는 형태로 들어가게 된다.

예를 들면

 

앞서 만든클래스인경우도.. 실질적으로 코드를 보면 test가 소문자이고 또한 스페이스가 들어가 있다.

 

그렇다 그 예민한 그분이 참 예민한 덕에 그냥 무시해도 좋지만 이래서 못써 저래서 안써를 외치는 덕에 코드는 점점 알게뭐야?로 달려가는게 아닐가?

 

하여간 이걸 해야 되어서 이번에 이렇게 해결해 본다.

 

상식적이냐고 묻지는 말자?

하여간 이렇게 처리하게 되면 앞서 고민했던 Compare를 고칠 필요도 없게된다.

값을 소문자로 넣어도 그리고 스페이스가 있어도 잘 제거된 상태로 들어가는 것이다.

 

여하튼 예민하신부 덕분에 코드가 묘하게 변경이 되어져 가는듯 싶다.

 

노파심에 하나더 추가하자면.. 함수들도 당근 처리해야 될것이라는것 정도?

 

코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.