나는 C#에서 일하고 있어요 그리고 난 같은 주소를 포함하는 문자열을 많이 가지고 사용하지 않고 숫자 및 텍스트 부분으로 주소 문자열 : 등등분할 정규 표현식
10 Downing Street Birch Lane 7 Palm Creek 8 Street 84 Chancellor Place Battle on the Somme 56
하고 있습니다.
이 문자열을 숫자 부분 (예 : "10"또는 "7")과 텍스트 부분 (예 : "Downing street"또는 "Birch Lane")으로 분할해야합니다.
오, 나는 RegEx를 사용하지 말 것을 요청 받았다.
string s ="84 Chancellor place";
string [] words = s.Split(' ');
문제는 (물론)은 모든 문자열 같은 방법으로 분할하지 않는다는 것입니다, 그래서 나는 항상 제외 할 수 없습니다 :
나는이 같은 공간에서 그들을 분할 이미 시도했습니다 텍스트의 나머지 부분의 수 (예 : 숫자가 단어 [0] 인 것으로 항상 알고있는 것은 아니며 텍스트 부분은 서로 다른 셀에 있으며 융합되지 않았습니다).
숫자 추출 방법을 찾아 주셔서 감사드립니다.
편집 : 각각의 예에서 원하는 출력이 작은 클래스를 사용
List<Address> addresses = new List<Address>();
foreach (string str in strings)
{
Address addr = new Address();
addresses.Add(addr);
int num, numIndex = int.MinValue;
string[] tokens = str.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < tokens.Length; i++)
{
if (int.TryParse(tokens[i], out num))
{
addr.Number = num;
numIndex = i;
break;
}
}
if (addr.Number.HasValue)
{
// join the rest with white-spaces to the street name skipping the number
addr.Street = string.Join(" ", tokens.Where((s, i) => i != numIndex));
}
else
{
addr.Street = str;
}
}
:
string1=10 string2=Downing Street
string1=7 string2=Birch Lane
string1=8 string2=Palm Creek Street
string1=84 string2=Chancellor Place
string1=56 string2=Battle on the Somme
게시 한 각 사례에 대해 원하는 출력을 포함하십시오. – Oded
"REGEX를 사용하지 말라는 질문을 받았습니다"는 나에게 어리석은 요구 사항처럼 보입니다. 직장에 가장 적합하기 때문입니다. 마치 팔을 쓰지 않고 무거운 짐을 움직이는 것을 누군가에게 묻는 것과 조금 같습니다. – spender
@spender - 의미는 숙제 일 것입니다. – Oded