2014-02-15 2 views
-2

저는 C#을 처음 사용하기 때문에 이것은 어리석은 질문처럼 보일 수 있습니다. 내가 네 덩어리로 분할하고 별도의 lables에 표시하는 방법을 알고 싶어 등 30,319String을 파싱하고 나눕니다.

10 Enjay 박사 볼티모어 GA로
나는 주소 문자열을 가지고있다.
거리, 도시, 주 및 우편 번호 하나의 레이블.
거리 주소가 사용자에 의해 변경되므로 처음 7 자리 만 읽도록 양식을 프로그래밍 할 수 없습니다.


는 당신의 도움을 주셔서 감사합니다 :)


string Address = "10 Enjay Dr. Baltimore GA 30319" 
String[] tokens = Address.Split(" "); 
      String street = tokens[0] + " " + tokens[1] + " " + tokens[2]; 
      MessageBox.Show(street); 
      string city = tokens[3]; 
      MessageBox.Show(city); 
      string state = tokens[4]; 
      MessageBox.Show(state); 
      string zipcode = tokens[5]; 
      MessageBox.Show(zipcode); 

이 내 자신의 솔루션입니다하지만 사람들처럼 공간이 문자열을 분할하는 좋은 방법이 아니라고 말했다. 여러분의 의견에 감사드립니다.

+0

문자열을 분할 할 패턴이 있습니까? 따라서 처음 7 자 (공백없이)는 거리이며, 나머지는 어떨까요? –

+2

''1 East Main St 뉴욕 NY 10210'을 어떻게 파싱하겠습니까? –

+0

@D Stanley 좋은 질문입니다 ... / – IMAK

답변

1

사람들이 말한대로 .Split()으로 처리 할 수 ​​있습니다. 그러나 도시와 주 모두를위한 다중 공간의 경우를 처리하기 위해 구분 기호가 공백 일 경우에는 실제로는 불가능합니다.

//Single-word city name 
string str = "10 Enjay Dr. Baltimore GA 30319" 
string[] ss = str.Split(" "); 
string zip = ss[ss.Count - 1]; 
string state = ss[ss.Count - 2]; 
string city = ss[ss.Count - 3]; 
string address = ""; 
for(int i=0;i<ss.Count - 4;i++) 
    address += ss[i]; 

당신은 또한 단일 작업을 수행 할 수 있습니다 주위에 있음을 전환 : 경우에 그 중 하나 (또는, 음, 거리 이름 만 수와 한 단어입니다), 당신은 종류의 일을 할 수있는 멀티 모호하다 단어 주소/다중 단어 도시 이름의 경우. 즉, 유효한 문자로 공백을 포함하는 데이터 목록에서 구분 기호로 공백을 선택하는 것은 끔찍한 생각입니다. %와 같은 특이한 구분 기호를 사용하지 않는 이유는 무엇입니까? 또는, 누가 신경 써서?, 왜 "$ % $"같은 것이 아닌가? 행운을 빌어 그 특정 문자열을 유효한 입력으로 포함하는 사례를 찾습니다.

관련 문제