|
Strings: Segmenter une chaîne de caractères en ses composantes individuelles |
Author(s) Dev Ashish |
|
Segmenter une chaîne de caractères en ses composantes individuelles.
(Q) J'ai une chaîne de caractères séparées par un séparateur (virgule,
point, point virgule, espace). Comment extraire chaque valeur de cette chaîne?
(A) Vous pouvez utiliser ces deux fonctions fournies par Microsoft pour
retrouver chaque valeur. Noter que ces fonctions sont écrites pour un cas où
la virgule est utilisée comme séparateur, mais qu'elles peuvent être
aisément être modifiées pour accommoder tout autre séparateur. Utiliser la
procédure comme exemple.
Function CountCSWords(ByVal s) As Integer
Dim WC As Integer, Pos As Integer
If VarType(s) <> 8 Or Len(s) = 0 Then
CountCSWords = 0
Exit Function
End If
WC = 1
Pos = InStr(s, ",")
Do While Pos > 0
WC = WC + 1
Pos = InStr(Pos + 1, s, ",")
Loop
CountCSWords = WC
End Function
Function GetCSWord(ByVal s, Indx As Integer)
Dim WC As Integer, Count As Integer
Dim SPos As Integer, EPos As Integer
WC = CountCSWords(s)
If Indx < 1 Or Indx > WC Then
GetCSWord = Null
Exit Function
End If
Count = 1
SPos = 1
For Count = 2 To Indx
SPos = InStr(SPos, s, ",") + 1
Next Count
EPos = InStr(SPos, s, ",") - 1
If EPos <= 0 Then EPos = Len(s)
GetCSWord = Trim(Mid(s, SPos, EPos - SPos + 1))
End Function
Sub Test()
Dim strAString As String
Dim I As Integer
Dim intCnt As Integer
strAString = "This,calls,the,two,functions,listed,above"
intCnt = CountCSWords(strAString)
For I = 1 To intCnt
Debug.Print GetCSWord(strAString, I)
Next
End Sub
|