我有一个字符串,有可能是下面的格式:
"abc('test','test','test');"
或者
"abc('test',0,1)"abc其实是一个javascript函数来的,里面的三个参数,当其中一个参数中含有单引号的时候,执行起来就会出错,那么我需要处理掉中间的单引号。也就是当发现:
"abc('test','te'st','test');"的时候,需要转换成:
"abc('test','te\\'st','test');"不建议用循环去处理,因为这个字符串太过复杂,请教各位有没有好的方法处理这个问题。

解决方案 »

  1.   

    在函数入口的开头,用IndexOf()和Replace()就可以处理了。
      

  2.   

    条件不是很清晰,如果确定 'aaaa' , 'aa'aa' -- 两个单引号(配对合法)之间有只有一个需要转义的字符(非法),即可以通过判断是否是奇数(f=当前找到的累加器,不是索引, f/2 !=0)的地方来加入转义字符,如果含有两个转义的字符,该方法无效.可以根据函数参数的特性,
    1 先找到 ()中的内容 str1
    2 用,号拆分 str1 = strTmp[n] 然后去除头尾的'
    3 过滤新字符串中所有转义字符.
      

  3.   

    string strA ="abc('test','te'st','test');";
    string strB =Regex.Replace(strA,"[^(),]['][^(),]","\\'");
      

  4.   

    楼上的思路是对的,
    但正则表达式有点问题。。
    应该写成:
    string strA="abc('test','te'st','test');";
    string strB=Regex.Replace(strA,"(?<=[^(),])['](?=[^(),])","\\'");