日期:2014-05-17  浏览次数:21252 次

简单问题! 关于取消转义"\"
我知道字符串 比如 string x= "c:\123\123" 的输出结果是 "c:123123"
  string x = @"c:\123\123" 的输出结果是 "c:\123\123"

@可以对字符串使用,取消中间的转义符号 "\"的作用,但是现在的情况是,是变量的话怎么办?

 比如:一个函数,接收到一个路径的参数X,我把X赋给Y,Y的输出就会有问题,而又没办法对Y使用 @符号取消转义
 void function A(string x)
{
  y=x; //其输出结果就会是 "c:123123"
   
  //又不能用 y=@x;

}

高手们,有什么办法解决啊?????

------解决方案--------------------
楼主有没有测试啊,估计是光凭想象的,

C# code

        private void button1_Click( object sender, EventArgs e )
        {
            AAA( @"abc\133\fadf\asdfs" );
            AAA( System.IO.Directory.GetCurrentDirectory() );
        }

        private void AAA( string x )
        {
            MessageBox.Show( x );
        }

------解决方案--------------------
^_^ LS说的对 LZ是在是杞人忧天了...
------解决方案--------------------
^_^
------解决方案--------------------
LZ啊...
字符串的转义实在编译时做的.
你那个y=x已经实在运行时了.
是不会再转义的.
------解决方案--------------------
...哦 LZ一开始说的不清楚....
string v = "c:\\\\123\\\\123"; 或者 @"c:\\123\\123"
把v传给mysql就可以了
------解决方案--------------------
传到数据库是否编码了,否则不会转化。c:\123\123能保存到数据库

------解决方案--------------------
探讨
首先,谢谢1楼,我换个方式说下我的具体问题!

我传到mysql的字符串形如:"c:\123\123"  保存结果是  "c:123123"
除非传"c:\\123\\123"      才能得到 " c:\123\123"

这说明在mysql下,又转义了一次

我单步调试时发现 变量的值比如是:"c:\\123\\123"

传到数据库那边就变成  "c:\123\123"  了

mysql 再加把力 就变成    "c:123123"

我的具体问题就是这么个,刚才在mysql 专区提问,他们说mysql中是会进行转义…

------解决方案--------------------
你都说是mysql了 肯定是要编码的
就用这个办法
C# code

public static string MySqlSqlEncode(string sqlString)
{
  //...
  return sqlString.Replace(@"\",@"\\");
}