【发布时间】:2008-11-12 22:17:21
【问题描述】:
我对 c# 还很陌生,所以我在这里问这个问题。
我正在使用一个返回一长串 XML 值的 Web 服务。因为这是一个字符串,所以所有属性都转义了双引号
string xmlSample = "<root><item att1=\"value\" att2=\"value2\" /></root>"
这是我的问题。我想做一个简单的string.replace。如果我在 PHP 中工作,我只需运行 strip_slashes()。
但是,我在 C# 中,我一生都无法弄清楚。我无法写出我的表达式来替换双引号 ("),因为它终止了字符串。如果我转义它,那么它的结果不正确。我做错了什么?
string search = "\\\"";
string replace = "\"";
Regex rgx = new Regex(search);
string strip = rgx.Replace(xmlSample, replace);
//Actual Result <root><item att1=value att2=value2 /></root>
//Desired Result <root><item att1="value" att2="value2" /></root>
MizardX:要在原始字符串中包含引号,您需要将其加倍。
这是重要的信息,现在尝试这种方法......那里也没有运气 双引号在这里发生了一些事情。你们都建议的概念是可靠的,但这里的问题是处理双引号,看起来我需要做一些额外的研究来解决这个问题。如果有人想出什么,请发布答案。
string newC = xmlSample.Replace("\\\"", "\"");
//Result <root><item att=\"value\" att2=\"value2\" /></root>
string newC = xmlSample.Replace("\"", "'");
//Result newC "<root><item att='value' att2='value2' /></root>"
【问题讨论】:
-
绝对不要在这里使用正则表达式;只需使用替换功能!
-
查看最后一个答案 - 你已经完成了你想要的,只是你看待它的方式让你一团糟。
-
我同意,我什至看不到这里的问题。斜杠不是字符串中的真实字符,它们是转义标记!
-
谢谢大家,我只需要关于文字等的解释。我标记了我的答案。它工作正常,正如我所期望的那样,我正在用正确的字符串替换不正确的字符串...grrrr。