You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中移除字符串的双引号?现有代码添加双引号编译失败

在C#中移除字符串中的双引号(基于现有移除逻辑)

现有一段可移除字符串指定字符的C#代码:

var str = "My name @is ,Wan.;'; Wan";
var charsToRemove = new string[] { "[", "]" };
foreach (var c in charsToRemove)
{
    str = str.Replace(c, string.Empty);
}

想在此基础上移除字符串中的双引号,但尝试两种写法均无法编译:

第一种写法:

var str = "My name @is ,Wan.;'; Wan";
var charsToRemove = new string[] { "[", "]", """ };
foreach (var c in charsToRemove)
{
    str = str.Replace(c, string.Empty);
}

第二种写法:

var str = "My name @is ,Wan.;'; Wan";
var charsToRemove = new string[] { "[", "]", """" };
foreach (var c in charsToRemove)
{
    str = str.Replace(c, string.Empty);
}

同时考虑过使用Char类的IsLetterOrDigit等方法,但不确定是否有可识别双引号的方法。


解决方法

编译失败核心原因是字符串字面量中双引号的转义规则没处理对,以下几种方案可以解决:

方案1:常规字符串转义双引号

在C#的常规字符串里,用反斜杠\转义双引号,直接添加到移除数组中:

var str = "My name @is ,Wan.;'; Wan";
// 如果原字符串包含双引号,比如 str = "\"Hello\" World",同样适用
var charsToRemove = new string[] { "[", "]", "\"" };
foreach (var c in charsToRemove)
{
    str = str.Replace(c, string.Empty);
}

方案2:使用逐字字符串

如果用@开头的逐字字符串,需要用两个双引号""表示一个实际的双引号:

var str = @"My name @is ,Wan.;'; Wan";
var charsToRemove = new string[] { "[", "]", @"""" };
// 若使用C# 11及以上版本,还可以用原始字符串字面量简化:new string[] { "[", "]", """ }
foreach (var c in charsToRemove)
{
    str = str.Replace(c, string.Empty);
}

方案3:用Linq过滤(替代遍历替换)

如果不想用遍历替换的方式,也可以借助Linq直接过滤掉双引号:

using System.Linq;

var str = "My name @is ,Wan.;'; Wan";
str = new string(str.Where(c => c != '"').ToArray());

这种方式直接筛选出所有非双引号的字符,重新构建字符串,逻辑更简洁。

内容的提问来源于stack exchange,提问作者Steven Douglas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:57:33