2017-05-08 26 views
-2

我有一個字符串被*(星號)分割,我想合併所有項目並創建一個具有最大值的新字符串。 如何獲得新字符串的最大值?合併多個字符串並創建設置了最大參數值的新字符串

Function MergeAccessArray() 
    f_AccessArray = "[email protected]=0|dnProjectsSendReport=1#[email protected]=0|dnWorkplansGrouping=1*[email protected]=1|dnProjectsSendReport=3#[email protected]=1|dnWorkplansGrouping=0*[email protected]=5|dnProjectsSendReport=1#[email protected]=0|dnWorkplansGrouping=2" 

    arrAccessPack = Split(f_AccessArray, "*") 
    nArrString = "" 
    For i = 0 To UBound(arrAccessPack) 
    If i < UBound(arrAccessPack) Then strPipe = "|" Else strPipe = "" 
    arrParts = Split(arrAccessPack(i), "#") 
    nArrPartString = "" 
    For j = 0 To UBound(arrParts) 
     'If j < UBound(arrParts) Then iPipe = "|" Else iPipe = "" 
     nPart = Split(arrParts(j), "@")(1) 
     nArrPartString = nArrPartString & nPart & strPipe 
    Next 
    nArrString = nArrString & nArrPartString & strPipe 
    Next 
    nArrString = Replace(nArrString, "||", "|") 

    xArrString = Split(nArrString, "|") 
    For x = 0 To UBound(xArrString) 
    Next 
    MergeAccessArray = nArrString 
End Function 

我想這個字符串:

arrNewParameters = "[email protected]=5|dnProjectsSendReport=3#[email protected]=1|dnWorkplansGrouping=2" 
+1

對於每個參數,將其添加到'Scripting.Dictionary'對象,其中參數名稱爲鍵,值爲值。當參數已經存在時,用最大值覆蓋它。處理完所有參數後,請使用字典中的鍵和值重新構建字符串。 – AutomatedChaos

+0

tanx sir ...我沒有使用詞典的經驗..並且我認爲我的代碼不是最優的 – sadrasjd

回答

1

作爲後續行動,以我的意見,這是你如何使用字典來獲得獨特的鍵列表,並添加最高值的示例它:

s = "[email protected]=0|dnProjectsSendReport=1#[email protected]=0|dnWorkplansGrouping=1*[email protected]=1|dnProjectsSendReport=3#[email protected]=1|dnWorkplansGrouping=0*[email protected]=5|dnProjectsSendReport=1#[email protected]=0|dnWorkplansGrouping=2" 

Set dict = CreateObject("Scripting.Dictionary") 
Set re = New RegExp 
re.Global = True 
re.Pattern = "(\w+)=(\d+)" 

Set matches = re.Execute(s) 
for each match in matches 
    key = match.Submatches(0) 
    value = cint(match.Submatches(1)) 
    if dict.Exists(key) Then 
     if value < dict.Item(key) then 
      value = dict.Item(key) 
     End If 
    End If 
    dict.Item(key) = value 
next 

for each key in dict 
    msgbox key & "=" & dict.Item(key) 
Next 

' output: 
' dnProjectsPatterning=5 
' dnProjectsSendReport=3 
' dnWorkplansAdd=1 
' dnWorkplansGrouping=2 

編輯:這是將生成的字符串是你的一個例子,但它只會給定鍵做到這一點。

target = "[email protected]={dnProjectsPatterning}|dnProjectsSendReport={dnProjectsSendReport}#[email protected]={dnWorkplansAdd}|dnWorkplansGrouping={dnWorkplansGrouping}" 
for each key in dict 
    target = Replace(target, "{" & key & "}", dict.Item(key)) 
Next 
msgbox target 

提示:如果您期望從SO社會更多,更好的答案,不妨先從改善你的問題,並告訴你,而試圖去解決已經做了努力。

+0

Tanx AutomatedChaos ...爲您的創造性方法...您能否按照以下格式進行改革? ** 「項目@ dnProjectsPatterning = 5 | dnProjectsSendReport = 3#工作計劃@ dnWorkplansAdd = 1 | dnWorkplansGrouping = 2」 ** NARR = 「」 在字典每個鍵 NARR = NARR&密鑰 「=」 &字典。項目(關鍵)「|」 Next msgbox nArr – sadrasjd

+0

你可以幫我創建這個字符串:**「projects @ dnProjectsPatterning = 5 | dnProjectsSendReport = 3#工作計劃@ dnWorkplansAdd = 1 | dnWorkplansGroupi ng = 2」** – sadrasjd

+0

**我是麻煩** plz幫助 – sadrasjd