我有以下内容:
var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\">XX</option>\r\n";
还有一个如下所示的字符串:
var topicValue = "456";
有没有一种方法可以在 topicValue 匹配时创建如下所示的新主题字符串:
var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\" selected=\"selected\" >XX</option>\r\n";
我不确定如何创建一个正则表达式,该表达式可以与我的反斜杠一起使用 主题字符串。还有比使用正则表达式更简单的方法吗?
最佳答案
将 XML 作为字符串进行操作从来都不是一个好主意。看起来 topic
中有 XML 的一部分。为什么不把它当作 XML 来对待呢?首先,让我们将其设为有效的 XML,以便使用。
<options>
<option value=\"123\" isSelectd=\"false\">X</option>
<option value=\"456\" isSelectd=\"false\">XX</option>
</options>
此处添加了根节点 <options>
,并且还添加了一个新属性 isSelectd
,该属性对于两个子节点来说最初都是 false。应搜索并更新值为 456
的节点。现在使用 XmlDocument 类,您可以轻松实现您想要的目标。
var topic = "<options>" +
"<option value=\"123\" isSelectd=\"false\">X</option>" +
"<option value=\"456\" isSelectd=\"false\">XX</option>" +
"</options>";
int selectedValue = 456;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(topic);
foreach (XmlNode node in xmlDoc.ChildNodes[0].ChildNodes)
{
int value = Convert.ToInt32(node.Attributes[0].Value.ToString());
if (value == selectedValue)
node.Attributes[1].Value = "ture";
}
topic = xmlDoc.InnerXml;
主题现在包含以下 XML,
<options>
<option value=\"123\" isSelectd=\"false\">X</option>
<option value=\"456\" isSelectd=\"true\">XX</option>
</options>
关于c# - 如何使用 C# 替换包含反斜杠的字符串中的某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964058/