不确定我的大脑今天已经完全开始......
我需要在用户提供的字符串中转义定义的引号("
或'
),因此根据所选的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
能否帮助我完成上述启动完成工作?
我有没有明显的错误而没有看到?
有没有像#34; safe&#34;字符串或任何&#34;文化&#34;相关的东西?
答案 0 :(得分:1)
您需要将结果分配回来:
valueStr=valueStr.Replace(escFrom, escTo);
答案 1 :(得分:1)
Replace
方法不会更改字符串,您必须将方法调用的结果分配给字符串。
你也需要逃避反斜杠,所以它会是:
string escFrom = qString[type].ToString();
string escTo = "\\" + escFrom;
valueStr = valueStr.Replace("\\", "\\\\").Replace(escFrom, escTo);
答案 2 :(得分:0)
如果你只是用魔杖替换字符,可以使用Replace方法完成,你必须使用它的返回值;然而,我在上面的评论中说,这种方法可能不合适,当然取决于你最终想要实现的目标。