我需要能夠解析包含XML的字符串並通過修改標記來「修復」它。例如,我需要替換所有出現的fontSize="16"
與fontSize="16px".
找到字符串的出現並有效地插入新字符串
在c#和.NET中這樣做的有效(但可讀)方式是什麼?我在一段時間內開始使用IndexOf
的路線,但認爲必須有更好的方法來做到這一點。
我需要能夠解析包含XML的字符串並通過修改標記來「修復」它。例如,我需要替換所有出現的fontSize="16"
與fontSize="16px".
找到字符串的出現並有效地插入新字符串
在c#和.NET中這樣做的有效(但可讀)方式是什麼?我在一段時間內開始使用IndexOf
的路線,但認爲必須有更好的方法來做到這一點。
嘗試Regex.Replace()
:
Regex.Replace(inputText, @"fontSize=""(\d+)""", @"fontSize=""$1px""")
第二個參數認定的fontsize="..."
所有實例,其中...
僅表示數字。由於有以下"
,它不會與16px
中的任何內容匹配。第三個參數告訴它用什麼替換匹配 - 在這種情況下,相同的字符串在數字($1
)後面添加了額外的px
。
感謝Bobson的答案和清晰的解釋。現在嘗試。 Dave –
如果你使用XML,我會使用正確的工具來完成這項工作:XDocument
。下面是一個例子:
var input = @"
<root>
<someTag fontSize=""16"" />
<someTag otherAttribute=""12"" />
</root>";
var doc = XDocument.Parse(input);
var allAttributes = doc.Descendants().Attributes();
var fontSizeAttributes = allAttributes.Where(x => x.Name == "fontSize");
foreach (var f in fontSizeAttributes)
f.Value = Regex.Replace(f.Value, "^([0-9].)$", "$1px");
結果doc
含有:
<root>
<someTag fontSize="16px" />
<someTag otherAttribute="12" />
</root>
這不會用'fontSize =「16pxpx」'替換現有的'fontSize =「16px」'嗎?你需要在正則表達式中使用周圍的引號。除此之外,如果必須將其視爲XML,我就會這麼做。 – Bobson
噢,好吶喊...我會更新。 –
['.Replace()'](http://msdn.microsoft.com/en-us/library/fk49wtc1% 28V = vs.110%29.aspx)? – Bobson
感謝Bobson,但我不會每次都知道確切的搜索字符串。即,fontSize =「是常量,但值不是 –
您是否嘗試過正則表達式(假設這不是XML或HTML數據,其中可能存在其他更安全,更高效的方法) –