자바 질문입니다. -.0
2014.04.21 16:40
고전 중입니다. 몇 시간 들여다 봐도 답을 못찾겠네요.
입력 출력
"영이", 20, 30, "경기도" "영이"; 20; 30; "경기도"
"영이, 김" 35, "서울" "영이, 김"; 35; "서울"
왼쪽으로 입력하면 오른쪽으로 나와야 되는데요,
첫번째 줄은 물론 문제가 안되는데
둘째 줄은 어떻게 해야 될지 모르겠네요.
delimiter 를 쓸 수도 없고,
정규표현식을 사용하려고 해도 생각보다 복잡하고
구문도 정확하게 모르겠구요.
코멘트 6
-
꼬소
04.21 17:03
-
호수가
04.21 17:24
흠, 아직 tokenizer 는 아직 못 배웠구요, String class 의 split 메소드나 정규식을 이용해서 풀어야 될 것 같아요. 근데... 모르겠어요 -.-
-
왕초보
04.22 08:03
꼬소님 답이 안되는 예외 하나가 두번째 줄에.. 코마가 하나 없네요. ㅠㅜ 그래서 코마랑 빈칸이 모두 delimiter가 되어야 하는데.. 그러면 "로 싸인 넘을 제대로 못 해주니까.. ㄷㄷㄷ
그래서 꼬소님의 두번째 답으로 가는데... 치환이 아니고 조금 더 똑똑한 짓을 해야 하게 생겼어요. ㄷㄷㄷ
-
꼬소
04.22 20:45
그래서 제 프로그램에 버그가....ㅋ
-
티쓰리유저
04.22 09:27
java에서 replace 메쏘드를 이용하면 안된 것인가요? 따옴표 안에 있는 쉼표는 가만 놔두어야 하고, 닫히는 따옴표 뒤에 나오는 컴마나 빈칸을 세미콜론으로 변환 시켜야 하는 것 같은데.
-
Text 데이터를 parsing할 때는, space 갯수 등 포맷이 정확하게 되어 있지 않을거라고 가정하시는게 좋습니다. 예를 들어
["aaa", "bbb"]
["aaa", "bbb"]
는 같은 것으로 인식을 해야 하죠. 그래서 바로 데이터를 치환하기보다는, 일단 자체적인 형식으로 한번 import하고, export를 해주는 것이 좋습니다. 위와 같은 형식에서 replace나 split같은 고정된 함수를 그대로 사용할 경우, ["가나다, 마바사", 아, 자 , 차 ] 같은 샘플에서 문제가 발생할 확률이 높습니다. Text 데이터를 정규표현식으로 정리하려고 하면, 향후 십중팔구 수많은 에러가 발생할 것입니다.
꼬소님의 두번째 방법을 참조하여, 가능한 ;로 분리될 각각의 요소들을 list 형식 (크기를 예측할 수 있고 메모리가 큰 문제가 아니라면 배열로 해도 됩니다.) 으로 읽어들이고, 만들어진 list를 다시 string 형태로 export하면 안전하게 될 겁니다. 물론 최소한 입력된 데이터 크기만큼의 메모리가 시스템에 남아있어야 하지만, 어차피 string을 치환하는 방식도 메모리를 많이 잡아먹고 속도도 아주 느리기 때문에 권장하지 않습니다. 그리고, 치환하는 방법도 입력된 메모리만큼의 크기는 사용할 확률이 높죠. 미친듯이 메모리 복사를 하는 방식을 선택하지 않는다면요.
ps : 제가 말씀드린 방식은 실제로 현장에서 사용될 상용코드을 작성할 떄의 방식이고, 학교 과제물 같은거라면 굳이 감안안해도 될 겁니다.
| 번호 | 제목 | 작성자 | 작성일 | 조회 |
|---|---|---|---|---|
| 공지 | 게시판 성격에 맞지 않는 글은 예고없이 삭제합니다. [6] | 星夜舞人 | 2011.10.10 | 216205 |
| 공지 | [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] | iris | 2010.03.16 | 196282 |
| 5898 | 언더싱크 정수기 추천 바랍니다. | 아람이아빠 | 11.09 | 7 |
| 5897 | 요기 음악들을 한꺼번에 다운받는 방법이 없나요? [4] | 海印 | 10.07 | 170 |
| 5896 | 포인트 확인 방법을 못 찾겠습니다. [1] | 수퍼소닉 | 02.02 | 398 |
| 5895 |
Palm V 와 Palm Vx 는 서로 호환되나요?
[4]
| 海印 | 03.09 | 399 |
| 5894 | 음악을 즐기는 방법 문의드립니다. [2] | 맑은하늘 | 12.24 | 400 |
| 5893 | 팜 TX 배터리 교환하는 좋은 방법 조언 부탁드립니다. [2] | SON | 10.29 | 409 |
| 5892 | 시인 혹은 시집 추천 부탁드립니다. [9] | 쿠후^^ | 06.19 | 414 |
| 5891 | 전남 화순 여행지 추천 바랍니다. [6] | 해색주 | 03.03 | 414 |
| 5890 |
어디로 가야할까요??
[2]
| 인간 | 01.06 | 417 |
| 5889 | 공유기 추천좀 해주세요. [1] | 앙겔로스 | 02.19 | 417 |
| 5888 |
다익스트라 알고리즘 질문 있습니다.
[6]
| 스파르타 | 12.08 | 420 |
| 5887 | 호텔예약? [4] | 도원 | 07.07 | 424 |
| 5886 | 캘리포냐 이너넷, 뭘 쓰면 좋을까요 ? [3] | 왕초보 | 10.06 | 427 |
| 5885 | 메뉴와 파이어폭스 [5] | 베이스 | 10.02 | 429 |
| 5884 | [PC] 업그레이드를 고민 중입니다만... [2] | 하뷔 | 02.20 | 430 |
| 5883 | 라즈베리파이를 사려면 어디가 좋을까요? [4] | 조슈아 | 10.11 | 430 |
| 5882 | 광부 한분 영입해도 될까요? [4] | 우야씨 | 01.17 | 433 |
| 5881 |
절연 테이프 위치
[1]
| 우야씨 | 09.12 | 434 |
| 5880 | 담보대출 금리 때문에 여쭙니다 ㅜㅜ [18] | 청부업자 | 06.25 | 435 |
| 5879 | 구글 My Tracks 대체 앱이 있을까요 ? [4] | 맑은하늘 | 08.17 | 437 |


tokenizer로 ','를 비교하면서 ;을 찍어주면 되겠네요..
string 안에 있는 ','는 무시
tokenizer를 사용하기 싫으시면, 한자 한자 띄어서 비교 해보면 될 듯 하네요..
" 만나면 닫히기 전까지는 pass, ',' 만나면 ';' 치환..