繁体   English   中英

如何使用string.replace来转义引号

[英]How to escape quotes with string.replace

不确定我的大脑今天已经完全开始......

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

"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

能否帮助我完成上述启动完成?

有没有明显的错误我正在做而没有看到?
有没有像“安全”字符串或任何“文化”相关的东西?

你需要分配结果:

valueStr=valueStr.Replace(escFrom, escTo);  

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

你还需要逃避反斜杠,所以它会是:

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

如果你只是用魔杖替换字符,可以用Replace方法完成,你必须使用它的返回值; 然而,我在上面的评论中说,这种方法可能不合适,当然取决于你最终想要实现的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM