2017-12-06 2 views
1

문자열을 별도의 문자열로 분할하는 방법을 찾고 있습니다. 소스 문자열 형식으로되어 있습니다 : VB에서 문자열 조작 (.NET)

Surname, First name (dd-mm-yyyy) (dd-mm-yyyy).doc 

그래서 예입니다 ...

Smith, John (01-07-2017) (02-07-2027).doc 

모든 소스 문자열이 정확한 형식을 따릅니다.

저는 파일 확장명을 제거하고 12 번째 문자를 다시 계산하여 두 번째 괄호의 내용을 가져 왔습니다. 그래서 (dd-mm-yyyy)를 별도의 문자열로 되돌릴 수 있지만 실제로는 소스 문자열의 모든 부분을 자체 문자열로 분석하고 변수를 자신의 변수에 할당해야합니다.

strSurname variable will hold "Smith" 
strFirstname variable will hold "John" 
strDateofBirth variable will hold "01-07-2017" 
strExpiryDate variable will hold "02-07-2027" 

나를 도와 줄 수있는 사람이 있습니까? 미리 감사드립니다.

답변

2

나는 문자열 방법을 사용하여이 방법을 사용하십시오 다음 indexOf... 변수 >= 0dateBlocks.Length = 2을 경우

Dim inputPath=" Smith, John (01-07-2017) (02-07-2027).doc" 
Dim token = Path.GetFileNameWithoutExtension(inputPath.Trim()) 
Dim indexOfComma = token.IndexOf(","c) 
Dim surName = token.Remove(indexOfComma).Trim() 
Dim secondToken = token.Substring(indexOfComma).Trim(" "c, ","c) 
Dim indexOfLeftparanthesis = secondToken.IndexOf("("c) 
Dim firstName = secondToken.Remove(indexOfLeftparanthesis).Trim() 
Dim dateBlocks = secondToken.Substring(indexOfLeftparanthesis).Trim().Split() 
Dim dateofBirth = dateBlocks(0).Trim("("c,")"c) 
Dim expiryDate = dateBlocks(1).Trim("("c,")"c) 

당신은 확인해야합니다.

+0

성에 공백이 있으면 문제가 발생할 수 있습니다. O Doherty –

+0

@VBDidNothingWrong : 당신 말이 맞습니다. 아마도 그 접근법이 너무 간단했을 것입니다. 내 대답 편집 –

+0

문자열에는 공백이 아닌 이름에 아포스트로피가 포함됩니다. 여전히 아포스트로피로 작동합니까? – getwiththeprogrammer