如何自己运行转义字符

xloveme 2014-01-15 12:02:15

string str1="abc\'123"; // str1 实际等于字符【abc'123】
string str2=@"abc\'123"; // str2 实际等于字符【abc\'123】

请问,如何在C#中有没有什么类和方法,可以直接运行一下使得 str2 转换为 str1 ?谢谢
...全文
182 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudsonhuang 2014-01-15
  • 打赏
  • 举报
回复
http://www.csharp-eval.com/Download.php 这个东西能做到 具体你看一下人家的源码吧
threenewbee 2014-01-15
  • 打赏
  • 举报
回复
添加引用-com-Microsoft Script Control 1.0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str2 = @"abc\'123\\\""1/0";
string str1 = evalstr(str2);
Console.WriteLine(str1);
}
static string evalstr(string s)
{
try
{
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "javascript";
string s1 = Regex.Replace(s, @"(?<!\\)((\\\\)*)\""", @"$1\""");
sc.AddCode("function foo() { return \"" + s1 + "\"; }");
return sc.Run("foo", new object[] { }).ToString();
}
catch (Exception ex)
{
return s; //ex.Message;
}
}
}
}


xloveme 2014-01-15
  • 打赏
  • 举报
回复
引用 8 楼 caozhy 的回复:
你告诉我2L代码有什么不一致。
非常感谢你的热心帮助!! 不过,确实有不一致的地方,同二楼的代码 假如 str2=@"\x8f9f"; 这个代码转义的结果,可以视为“乱码”并没有转义完全。 而IDE转义的结果是—— 【辟】字
threenewbee 2014-01-15
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str2 = @"abc\'123";
            string str1 = evalstr(str2);
            Console.WriteLine(str1);
        }
        static string evalstr(string s)
        {
            return Regex.Replace(s, @"\\(.)", "$1");
        }
    }
}
threenewbee 2014-01-15
  • 打赏
  • 举报
回复
引用 7 楼 xloveme 的回复:
全部答非所问。 我需要的是转义所有转义字符,100%与IDE匹配,如果每个转义字符用正则自己替换,担心某个漏掉或与IDE的规则不一致。 我需要的是像IDE得到的结果一样,但是自己转义。
你告诉我2L代码有什么不一致。
xloveme 2014-01-15
  • 打赏
  • 举报
回复
全部答非所问。 我需要的是转义所有转义字符,100%与IDE匹配,如果每个转义字符用正则自己替换,担心某个漏掉或与IDE的规则不一致。 我需要的是像IDE得到的结果一样,但是自己转义。
jiaoshiyao 2014-01-15
  • 打赏
  • 举报
回复
str1和str2不是一样的连接字符串 你看到版主的答案是给你替换 也就是说 你问的问题是如何把1这个字符串变成2 所以说 这个问题很奇葩
微wx笑 2014-01-15
  • 打赏
  • 举报
回复
不明白你为什么要这么做? string str2=@"abc\'123"; // str2 实际等于字符【abc\'123】 字符串前加@符号的写法是c#编译器所支持的特性。
BenBenBears 2014-01-15
  • 打赏
  • 举报
回复
str2.Replace(@"\`","`");
threenewbee 2014-01-15
  • 打赏
  • 举报
回复
引用 9 楼 xloveme 的回复:
[quote=引用 8 楼 caozhy 的回复:] 你告诉我2L代码有什么不一致。
非常感谢你的热心帮助!! 不过,确实有不一致的地方,同二楼的代码 假如 str2=@"\x8f9f"; 这个代码转义的结果,可以视为“乱码”并没有转义完全。 而IDE转义的结果是—— 【辟】字[/quote] 好吧,既然js和C#不同,那你还是用C#的吧。 思路类似,代码参考 http://bbs.csdn.net/topics/360188060

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧