如何用字符串替换引号

本文关键字:替换 字符串 何用 | 更新日期: 2023-09-27 17:59:56

不确定我的大脑今天是否已经完全启动。。。

我需要转义用户提供的字符串中定义的引号("'),因此根据所选的字符,转换应该如下所示:

"I'm not so '"stupid'", am I?"=>"I'''m not so '"stupid'", am I?"
"I'm not so '"stupid'", am I?"=>"I'm not so '''"stupid'''", am I?"

尝试使用string.Replace(string, string)让我有点疯狂,因为它仍然拒绝执行所需的替换(结果中没有插入额外的反斜杠)。我仍然拒绝通过循环手动执行;)

Dictionary<Type, char> qString;            // ...
valueStr = "I'm not so '"stupid'", am I?"; // Illustation only, in reality there is some user input used
// ...
string escFrom = qString[type].ToString(); // Make string from the quotation mark
string escTo   = "''" + escFrom;           // Add the escape to it
valueStr.Replace(escFrom, escTo);          // Try to replace it

你能帮我完成上面提到的启动吗

有没有什么明显的错误我正在做而没有看到
有没有类似"安全"字符串或任何与"文化"相关的东西?

如何用字符串替换引号

Replace方法不会更改字符串,您必须将方法调用的结果分配给字符串。

你还需要转义反斜杠,所以它应该是:

string escFrom = qString[type].ToString();
string escTo = "''" + escFrom;
valueStr = valueStr.Replace("''", "''''").Replace(escFrom, escTo);

您需要将结果分配回:

valueStr=valueStr.Replace(escFrom, escTo);  

如果您只想替换字符,可以使用replace方法来完成,在那里您必须使用它的返回值;然而,我支持上面的评论,即这种方法可能不合适,当然这取决于你最终想要实现的目标。