使用每个string.replacement增加ProgressBar

时间:2018-02-20 19:46:18

标签: xml string vb.net replace progress-bar

我有一段简单的代码可以将完整的XML文件转换为字符串。

     xOrgXml.Load(mOrgFile)
     fFullString = xOrgXml.OuterXml

我使用string.replace用另一个Form的输入替换字符串的某些部分。然后我将其转换回完整的XML文件。这一切都很好。

    fFullString = fFullString.Replace("<XMLtag>Item</XMLtag>", "<XMLtag>" & Form2.NewItem & "</XMLtag>")
    mXMLDocSave.LoadXml(fFullString)
    mXMLDocSave.Save(pSavelocation)

因为&#34;项目&#34;在字符串中多次出现我希望增加进度条(1)每次完成替换但string.replace方法是一次性传递,即使将其封闭在For Each语句中也是如此。

    fFullString = fFullString.Replace("<XMLtag>Item</XMLtag>", "<XMLtag>" & Form2.NewItem & "</XMLtag>")
    pProgressbar.Increment(1)

我试图使用string.split拆分完整的字符串,但这对我不起作用,因为唯一可用于拆分的字符是&#34;&lt;&#34;和&#34;&gt;&#34;这是将字符串转换回XML文件时所需的XML标记的关键部分

有没有人对如何处理这个问题有充分的认识?

1 个答案:

答案 0 :(得分:0)

典型的我发布了一个问题,30分钟后我找到了解决方案......

如果有人面临类似的挑战,以供将来参考:

我将我的string.replace语句更改为替换语句,该语句仅替换遇到的第一个匹配项。将此包含在For Each和Do Until循环中,每次进度条增加(1)。

原始字符串.replace:

    fFullString = fFullString.Replace("<XMLtag>Item</XMLtag>", "<XMLtag>" & Form2.NewItem & "</XMLtag>")

新字符串替换为For Each和Do Until循环中包含的1(..... ,, 1 )限制:

For Each Replacement As String In ReplaceCollection
    If Replacement = "<XMLtag>Item</XMLtag>" Then
          Do Until fFullString.Contains(Replacement) = False
               fFullString = Replace(fFullString, Replacement, "<XMLtag>" & Form2.NewItem & "</XMLtag>", , 1)
               pProgressbar.Increment(1)
          Loop
    End If
Next

我希望这也能帮助别人。