如何使用C#替换包含反斜杠的字符串中的某些值?
我有以下资料:如何使用C#替换包含反斜杠的字符串中的某些值?,c#,C#,我有以下资料: var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\">XX</option>\r\n"; 是否有一种方法可以在topicValue匹配时创建如下所示的新主题字符串: var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\"
var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\">XX</option>\r\n";
是否有一种方法可以在topicValue匹配时创建如下所示的新主题字符串:
var topic = "<option value=\"123\">X</option>\r\n <option value=\"456\" selected=\"selected\" >XX</option>\r\n";
var topic=“X\r\n XX\r\n”;
我不确定的是如何创建一个正则表达式来处理我的
主题字符串。还有比使用正则表达式更简单的方法吗?按照它的编写方式编写。例如:
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();
string topic=“X\r\n XX\r\n”;
Console.WriteLine(主题);
字符串topicValue=“456”;
string mustbereplace=string.Empty;
string replaceResult=string.Empty;
if(主题包含(主题值))
{
mustbereplace=“value=\”“+topicValue+”\”;
replaceResult=mustbereplace+“selected=\“selected\”;
topic=topic.Replace(mustbereplace,replacesult);
}
Console.WriteLine(主题);
Console.ReadLine();
好的,这是代码。请注意,这仅在空格和格式一致时有效:
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\""");
var-topic=//此处的主题
const string optionFormat=@“将XML作为字符串进行操作从来都不是一个好主意。看起来您在主题
中有XML的一部分。为什么不将其视为XML。首先,让我们将其设为有效的XML,以便使用
<options>
<option value=\"123\" isSelectd=\"false\">X</option>
<option value=\"456\" isSelectd=\"false\">XX</option>
</options>
主题现在包含以下XML
<options>
<option value=\"123\" isSelectd=\"false\">X</option>
<option value=\"456\" isSelectd=\"true\">XX</option>
</options>
X
XX
您可以将“option value=\\\”替换为“option value=\\\”,后跟“selected=\\\“selected\\”。很抱歉,我仍然不确定最佳语法。我应该使用正则表达式还是有其他方法?对于假定的方法,string.replace就足够了。这是string.replace(“选项值=\\\\“456\\\”,“选项值=\\\\“456\\\”所选=\\\\”所选\\).当然,你可以通过将数字作为变量传递来使其更灵活。@ChriPf-我需要做topic.replace吗?你能把这个作为变量的答案,这样我就可以接受并结束这个问题了。非常感谢。嗯…-实际的解决方案是由@MichaelGraczyk提出的,所以我宁愿把这归功于他。我认为你应该删除它“@”sign and write“@AdilMammadov这是两个不同的字符串。我正在尝试您的方法,但我遇到一个错误:object”不包含“Contains”的定义和最佳扩展方法重载-有什么想法吗?您能用“string topic”替换“var topic”吗然后重试?操作无法使用有效的XML,因为它包含反斜杠转义引号。
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;
<options>
<option value=\"123\" isSelectd=\"false\">X</option>
<option value=\"456\" isSelectd=\"true\">XX</option>
</options>