从.NET 中的字符串中去掉双引号

我试图匹配一些格式不一致的 HTML,需要去掉一些双引号。

目前:

<input type="hidden">

目标:

<input type=hidden>

这是错误的,因为我没有正确地逃避它:

替换(“”,“”) ;

这是错误的,因为没有空白字符(据我所知) :

s = s.Replace('"', '');

用空字符串替换双引号的语法/转义字符组合是什么?

236932 次浏览
s = s.Replace("\"", "");

您需要使用 the 来转义字符串中的双引号字符。

You have to escape the double quote with a backslash.

s = s.Replace("\"","");

我认为你的第一行确实可行,但我认为对于包含一个字符串(至少在 VB 中) ,你需要四个引号:

s = s.Replace("""", "")

对于 C # ,你必须使用反斜杠来转义引号:

s = s.Replace("\"", "");
s = s.Replace("\"",string.Empty);

您可以使用以下任何一种方法:

s = s.Replace(@"""","");
s = s.Replace("\"","");

...but I do get curious as to why you would want to do that? I thought it was good practice to keep attribute values quoted?

C # : "\"",因此是 s.Replace("\"", "")

Vb/vbs/vb.net: ""因此 s.Replace("""", "")

s = s.Replace( """", "" )

在一个字符串中,两个相邻的引号将起到预期的“字符”的作用。

替换(@“”“”,“”) ;

这招对我很管用

//Sentence has quotes
string nameSentence = "Take my name \"Wesley\" out of quotes";
//Get the index before the quotes`enter code here`
int begin = nameSentence.LastIndexOf("name") + "name".Length;
//Get the index after the quotes
int end = nameSentence.LastIndexOf("out");
//Get the part of the string with its quotes
string name = nameSentence.Substring(begin, end - begin);
//Remove its quotes
string newName = name.Replace("\"", "");
//Replace new name (without quotes) within original sentence
string updatedNameSentence = nameSentence.Replace(name, newName);


//Returns "Take my name Wesley out of quotes"
return updatedNameSentence;

我没有看到我的想法已经被重复了,所以我建议你看看微软 C # 文档中的 string.Trim,你可以添加一个字符来修剪,而不是简单地修剪空格:

string withQuotes = "\"hellow\"";
string withOutQotes = withQuotes.Trim('"');

should result in withOutQuotes being "hello" instead of ""hello""

如果你只想从字符串的两端(而不是中间)去掉引号,并且有可能在字符串的两端都有空格(例如,解析一个 CSV 格式的文件,其中在逗号后面有一个空格) ,那么你需要调用 Trim 函数 两次... 例如:

string myStr = " \"sometext\"";     //(notice the leading space)
myStr = myStr.Trim('"');            //(would leave the first quote: "sometext)
myStr = myStr.Trim().Trim('"');     //(would get what you want: sometext)

如果你想删除一个字符,我猜它更容易简单地读数组,跳过字符,返回数组。我在定制解析 vcard 的 json 时使用它。 因为它是带有“引用”文本标识符的 bad json。

将下面的方法添加到包含扩展方法的类中。

  public static string Remove(this string text, char character)
{
var sb = new StringBuilder();
foreach (char c in text)
{
if (c != character)
sb.Append(c);
}
return sb.ToString();
}

然后你可以使用这个扩展方法:

var text= myString.Remove('"');