合并多个字符串并使用设置的最大参数值创建新字符串 [英] Merge multi strings and create new string with set max parameters value

查看:31
本文介绍了合并多个字符串并使用设置的最大参数值创建新字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个由 * (星号)分割的字符串,我想合并所有项目并创建一个具有最大值的新字符串.如何获得新字符串的最大值?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆