gpt4 book ai didi

C# String.Replace 双引号和文字

转载 作者:可可西里 更新时间:2023-11-01 03:07:27 25 4
gpt4 key购买 nike

我是 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: To include a quote in a raw string you need to double it.

这是重要的信息,现在就尝试这种方法......也没有运气双引号在这里发生了一些事情。你们都建议的概念是可靠的,但这里的问题是处理双引号,看起来我需要做一些额外的研究来解决这个问题。如果有人想出什么办法,请张贴答案。

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>"

最佳答案

C#中的以下语句

string xmlSample = "<root><item att1=\"value\" att2=\"value2\" /></root>"

会实际存储值

<root><item att1="value" att2="value2" /></root>

鉴于

string xmlSample = @"<root><item att1=\""value\"" att2=\""value2\"" /></root>";

具有值(value)

<root><item att1=\"value\" att2=\"value2\" /></root>

对于第二种情况,需要将斜杠()替换为空字符串,如下所示

string test = xmlSample.Replace(@"\", string.Empty);

结果会是

<root><item att1="value" att2="value2" /></root>

附言

  1. 斜杠(\)是C#中的默认转义字符
  2. 要忽略斜线,在字符串的开头使用@
  3. 如果使用@,则转义符为双引号(")

关于C# String.Replace 双引号和文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/285579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com