给出以下部分文件示例:
<SellGrey>True</SellGrey>
<SellWhite>false</SellWhite>
<SellGreen>false</SellGreen>
<SellBlue>false</SellBlue>
进行不区分大小写的搜索和替换的最佳方法是什么,同时在输出上保持正确的大小写。
例如:
<SellGrey>True</SellGrey>
或
<Sellgrey>tRue</Sellgrey>
将是我正在寻找的,但替代,将永远是:
<SellGrey>False</SellGrey>
最后,请不要挂断&#34;标签&#34;由于文件格式错误,所以读取/写入xml会导致错误。请仔细查看字符串 - 不区分大小写的字符串搜索和替换,逐行。
提前致谢。
答案 0 :(得分:1)
由于你没有提供有关标签的更多细节,我使用字典来确保正确的套管。
Dim input as String = "<Sellgrey>tRue</Sellgrey>"
Dim pattern as String = "<(?<tag>.+)>(?<value>(true|false))</.+>"
'building a dictionary to specify how to proper case
Dim tagFormatter as new Dictionary(Of String, String)
tagFormatter.Add("sellgrey", "ShellGrey")
tagFormatter.Add("sellwhite", "SellWhite")
tagFormatter.Add("sellgreen", "SellGreen")
tagFormatter.Add("sellblue", "SellBlue")
'build the new string using lambda
Dim result = Regex.Replace(input, pattern, _
Function(m) String.Format("<{0}>{1}</{0}>", _
tagFormatter(m.Groups("tag").Value.ToLower), _
If(m.Groups("value").Value = "true", "True", "False")), _
RegexOptions.IgnoreCase)