我有以下内容:
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";
我不确定如何创建一个可以使用我的反斜杠的正则表达式 主题字符串。还有一种比使用正则表达式更简单的方法吗?
答案 0 :(得分:3)
将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>
答案 1 :(得分:1)
把它写成它是如何写的。例如:
string myString = "My name is \"John\"";
Console.WriteLine(myString);
myString = myString.Replace("\"John\"", "\"Jony\"");
Console.WriteLine(myString);
Console.ReadLine();
尝试使用以下代码来实现您的目标:
string topic = "<option value=\"123\">X</option>\r\n <option value=\"456\">XX</option>\r\n";
Console.WriteLine(topic);
string topicValue = "456";
string mustBeReplaced = string.Empty;
string replaceResult = string.Empty;
if (topic.Contains(topicValue))
{
mustBeReplaced = "value=\"" + topicValue + "\"";
replaceResult = mustBeReplaced + " selected=\"selected\"";
topic = topic.Replace(mustBeReplaced, replaceResult);
}
Console.WriteLine(topic);
Console.ReadLine();
答案 2 :(得分:1)
好的,这是代码。请注意,这仅在空格和格式一致时才有效:
var topic = // topic here
const string optionFormat = @"<option value=\""{0}\""";
var topicValue = // topic value here
var topicToReplace = String.Format(optionFormat, topicValue);
var replaced = topic.Replace(topicToReplace , topicToReplace + @" selected=\""selected\""");