입력받은 문자열을 쉼표와 빈칸에 따라 단어를 나누어 준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Function GetWords(ByVal TextLine As String, ByVal ParamArray Separators() As Char) As String() ' ' 입력받은 문자열을 쉼표와 빈칸에 따라 단어를 나누어 준다. ' divide character string into separate words according to period and blank space. ' 'Revision History '  Written by Yong-Yee Kim, 2005/11/25 ' Dim MySeparators() As Char = {","c, ":"c, "|"c, ";"c, """"c, "'"c} '기본 구분자 = 쉼표, 콜론, 파이프, 세미콜론, 큰따옴표, 작은따옴표 Dim Words() As String = {} ' '1)문자열 시작과 끝의 공백을 제거한다. TextLine = TextLine.Trim() ' '2)문자열을 구분자(쉼표)를 통하여 분할한다. If Separators.Length > 0 Then MySeparators = Separators End If Dim Tokens() As String = TextLine.Split(MySeparators) ' '3)얼마나 많은 단어가 존재하는가? Dim nums As Integer = 0 For i As Integer = 0 To Tokens.Length - 1 If Tokens(i).Trim.Length > 0 Then '빈 문자열의 단어는 제외시킴 nums += 1 End If Next i ' '4)단어수만큼 배열을 할당 ReDim Words(nums - 1) ' '5)단어를 반환한다. Dim WordCount As Integer = 0 For j As Integer = 0 To Tokens.Length - 1 If Tokens(j).Trim.Length > 0 Then Words(WordCount) = Tokens(j).Trim WordCount += 1 End If Next j ' Return Words End Function |
여기서 3)과 5)가 많이 비슷하고 중복된 것으로 느낄 것이다.
그래서 어느 한 쪽을 지워버리면 어떤 일이 생길까?
시간이 되시면 한 번씩 해보면 좋을 것 같다.
결론부터 말하자면, 빈 문자열도 하나의 단어처럼 취급될 수 있다.
즉, 원하는 결과를 제대로 얻을 수 없다.
[사용법]
1 2 3 |
Dim Words() As String = Getwords("김창선, 4", ",") '문자열을 쉼표로 구분하라 'Words(0) 의 내용은 "김창선" 'Words(1)의 내용은 "4" |