2011-06-21 6 views
1

私は現在持っている分割機能に問題があります。私は1つの区切り(split())で分割するか、多くの単一の文字(custom())で区切ることができます。これを分割する方法はありますか?これらの区切り文字は順不同であることに注意してください。VB6:マルチマルチキャラクタデリミタを使用したスプリット?

"[email protected]@[email protected]@[email protected]@[email protected]@ATS!!AND!!MARKS" 

私は新しいVB6 EXEプロジェクトを作成し、あなたが与えられますフォームにボタンを追加し、以下を使用し、以下の結果に

"MY" , "DATA" , "IS" , "LOCATED" , "HERE" , "IN" , "BETWEEN","THE", "ATS" , "AND", "MARKS" 

おかげ

答えて

2

を得るためにあなたの助けが必要Button1_Clickイベントのコード:

Private Sub Command1_Click() 
    Dim myText As String 
    Dim myArray() As String 
    Dim InBetweenAWord As Boolean 
    Dim tmpString As String 
    Dim CurrentCount As Integer 

    CurrentCount = 0 

    myText = "[email protected]@[email protected]@[email protected]@[email protected]@ATS!!AND!!MARKS" 

    For i = 1 To Len(myText) 
     If (Mid(myText, i, 1) = "@" Or Mid(myText, i, 1) = "!") And InBetweenAWord = True Then 
      CurrentCount = CurrentCount + 1 
      ReDim Preserve myArray(CurrentCount) 
      myArray(CurrentCount) = tmpString 
      tmpString = "" 
      InBetweenAWord = False 
     Else 
      If (Mid(myText, i, 1) <> "@" And Mid(myText, i, 1) <> "!") Then 
       tmpString = tmpString & Mid(myText, i, 1) 
       InBetweenAWord = True 
      End If 

     End If 
    Next 

    For i = 1 To CurrentCount 
     MsgBox myArray(i)  'This will iterate through all of your words 
    Next 


End Sub 

最初のFor-Nextループがfini [myArray]には不要な文字を含まない単語がすべて含まれているので、好きな場所で使用できます。私はちょうど私のコードが働いていることを確認するためにユーザーにMsgBoxとしてそれらを表示しました。

+0

ああ非常に印象的な - 私はまだVB6のxDを使用してい信じることができません –

1

VB6では文字の処理が本当に面倒です。私は次のように使用MultiSplitこの

Private Function MultiSplit(ByVal sText As String, vDelims As Variant) As Variant 
    Const LNG_PRIVATE As Long = &HE1B6 '-- U+E000 to U+F8FF - Private Use Area (PUA) 
    Dim vElem   As Variant 

    For Each vElem In vDelims 
     sText = Replace(sText, vElem, ChrW$(LNG_PRIVATE)) 
    Next 
    MultiSplit = Split(sText, ChrW$(LNG_PRIVATE)) 
End Function 

のような組み込み関数を使用して好むこの

Private Sub Command1_Click() 
    Dim vElem  As Variant 

    For Each vElem In MultiSplit("[email protected]@[email protected]@[email protected]@[email protected]@ATS!!AND!!MARKS", Array("!!", "@@")) 
     Debug.Print vElem 
    Next 
End Sub 
関連する問題