문자열을 읽어서 단어로 나누어 주는 함수 짜기

입력받은 문자열을 쉼표와 빈칸에 따라 단어를 나누어 준다.

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)가 많이 비슷하고 중복된 것으로 느낄 것이다.
그래서 어느 한 쪽을 지워버리면 어떤 일이 생길까?
시간이 되시면 한 번씩 해보면 좋을 것 같다.
결론부터 말하자면, 빈 문자열도 하나의 단어처럼 취급될 수 있다.
즉, 원하는 결과를 제대로 얻을 수 없다.

[사용법]

Dim Words() As String = Getwords("김창선, 4", ",") '문자열을 쉼표로 구분하라
'Words(0) 의 내용은 "김창선"
'Words(1)의 내용은 "4"

Print Friendly, PDF & Email