合并多个字符串并使用设置的最大参数值创建新字符串 [英] Merge multi strings and create new string with set max parameters value
问题描述
我有一个由 *
(星号)分割的字符串,我想合并所有项目并创建一个具有最大值的新字符串.如何获得新字符串的最大值?
I have a string that splitted by *
(stars) and I want to merge all items and create a new string with max value.
How can get max value for new string?
Function MergeAccessArray()
f_AccessArray = "projects@dnProjectsPatterning=0|dnProjectsSendReport=1#workplans@dnWorkplansAdd=0|dnWorkplansGrouping=1*projects@dnProjectsPatterning=1|dnProjectsSendReport=3#workplans@dnWorkplansAdd=1|dnWorkplansGrouping=0*projects@dnProjectsPatterning=5|dnProjectsSendReport=1#workplans@dnWorkplansAdd=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 = "projects@dnProjectsPatterning=5|dnProjectsSendReport=3#workplans@dnWorkplansAdd=1|dnWorkplansGrouping=2"
推荐答案
作为我评论的后续,这是一个关于如何使用字典获取唯一键列表并将最高值添加到其中的示例:
As a follow up to my comment, this is an example on how you can use the dictionary to get a list of unique keys and add the highest value to it:
s = "projects@dnProjectsPatterning=0|dnProjectsSendReport=1#workplans@dnWorkplansAdd=0|dnWorkplansGrouping=1*projects@dnProjectsPatterning=1|dnProjectsSendReport=3#workplans@dnWorkplansAdd=1|dnWorkplansGrouping=0*projects@dnProjectsPatterning=5|dnProjectsSendReport=1#workplans@dnWorkplansAdd=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
这是一个将为您生成字符串的示例,但它只会为给定的键生成.
This is an example that will generate the string for you, but it will only do it for given keys.
target = "projects@dnProjectsPatterning={dnProjectsPatterning}|dnProjectsSendReport={dnProjectsSendReport}#dnWorkplansAdd@dnWorkplansAdd={dnWorkplansAdd}|dnWorkplansGrouping={dnWorkplansGrouping}"
for each key in dict
target = Replace(target, "{" & key & "}", dict.Item(key))
Next
msgbox target
提示:如果您希望 SO 社区提供更多更好的答案,请从改进您的问题开始,并展示您在寻求解决方案时已经付出的努力.
Tip: If you expect more and better answers from the SO community, start out with improving you questions and show the effort you already did while trying to get to a solution.
这篇关于合并多个字符串并使用设置的最大参数值创建新字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!