2016-04-21 3 views
2

Ich möchte Dictionary-Typ-Array zu Funktion mit VBScript übergeben.Pass-Muster und entsprechende Ersetzungszeichenfolgen zu Funktion

Ich möchte eine Regex-Funktion machen, die auf einem solchen Array ausgeführt werden kann.

Zum Beispiel

array = [pat1:rep1, pat2:rep2] 
'or any valid VBScript array or dictionary format 

txtLn = regs() 

Function regs(array) 
    Set regEx_ = new regExp 
    With regEx_ 
    .Global = True 
    .MultiLine = True 
    .IgnoreCase = True 

    .Pattern = pat1:rep1 
    txtLn = regEx_.replace(txtLn, replace pattarn 1 from array) 

    .Pattern = pat1:rep2 
    txtLn = regEx_.replace(txtLn, replace pattarn 2 from array) 

    'and so on till the length of array 

    txtLn = regs 
End function 

Ich weiß, dass diese weit gefasste Frage ist, aber ich habe keine Ahnung. Was ich erwarte ist eine andere Idee. Bitte geben Sie mir die Richtung

+0

VBA oder VBS? Das sind 2 verschiedene Dinge. –

+0

Danke für den Kommentar. Ich dachte, dass Leute, die VBA verwenden, auch die Antwort wissen können, da das Wörterbuch auch in VBA vorhanden ist (indem Referenzen hinzugefügt werden) – Rahul

Antwort

2

Sieht aus wie Sie wirklich ein Wörterbuch übergeben wollen, da Sie wollen Übergeben von Mustern, die Ersatzzeichenfolgen zugeordnet sind. Probieren Sie etwas wie folgt aus:

Function regs(d) 
    Set regEx_ = New RegExp 
    With regEx_ 
    .Global = True 
    .MultiLine = True 
    .IgnoreCase = True 

    For Each p In d.Keys 
     .Pattern = p 
     txtLn = regEx_.Replace(txtLn, d(p)) 
    Next 
    End With 

    regs = txtLn 
End Function 

Beachten Sie, dass Sie benötigen txtLn dem Funktionsnamen zuweisen das Ergebnis zurück an den Aufrufer übergeben. Es wäre auch eine gute Übung, als Parameter in die Funktion zu übergeben, anstatt die Funktion auf eine globale Variable anwenden zu lassen.

+0

Danke. Als nächstes, Wie konvertiere ich die Zeichenfolge in ein Wörterbuch, so dass ich eine Funktion erstellen kann, die beide zuerst die Zeichenfolge zum Wörterbuch hinzufügt und dann replace ausführt. – Rahul

+0

wie folgt: http://stackoverflow.com/questions/20913924/convert-query-string-to-object. Wird das das Beste sein? – Rahul

+0

Das ist (offensichtlich) was ich tun würde. –

1

Sie sagten, Sie brauchen Ideen - hier ist, wie ich Wörterbuch zu einem Untergebenen. Im Beispiel erzeugen Sie ein Wörterbuch mit den Tasten die Ziffern von 0 bis 9 und gebe ich es an die PrintDictionary Unter, um es zu drucken:

Option Explicit 

Public Sub NumbersAndDictionary() 

    Dim l_counter_0  As Long 
    Dim l_counter_1  As Long 
    Dim l_counter_2  As Long 
    Dim l_value   As Long 

    Dim my_dict   As Object 
    Dim my_str   As String 

    Set my_dict = CreateObject("Scripting.Dictionary") 

    For l_counter_0 = 65 To 76 
     my_str = CStr(l_counter_0) 
     For l_counter_1 = 1 To Len(my_str) 
      l_value = CLng(Mid(my_str, l_counter_1, 1)) 

      If Not my_dict.Exists(l_value) Then 
       my_dict.Add l_value, 1 
      Else 
       my_dict(l_value) = my_dict(l_value) + 1 
      End If 

     Next l_counter_1 
    Next l_counter_0 

    Call PrintDictionary(my_dict) 

    Set my_dict = Nothing 

End Sub 

Public Sub PrintDictionary(my_dict As Object) 

    Dim l_counter_0  As Long 

    For l_counter_0 = 0 To my_dict.Count - 1 
     Debug.Print l_counter_0; " "; my_dict.Item(l_counter_0) 
    Next l_counter_0 
End Sub 
+0

Danke. Lass mich zuerst 15 Wiederholungen und dann +1 erreichen. – Rahul

Verwandte Themen