C#启动程序传递参数丢失双引号,如何解决?

c#启动程序之后传递的参数没有双引号

bug展示

在这里插入图片描述在这里插入图片描述

C#程序启动代码

        static void Main(string[] args)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();//创建参数传递对象
            dic.Add("dst", "ddd");
            dic.Add("dasdst", "ddd");
            var requesDataStr = JsonConvert.SerializeObject(dic);//序列化对象,用于参数的传递

            ProcessStartInfo startInfo = new ProcessStartInfo();//创建一个启动程序的ProcessStartInfo
            startInfo.FileName = "MD5Encryption.exe"; //启动的应用程序名称

            startInfo.Arguments = @requesDataStr;//给启动的程序传递的参数
            Process.Start(startInfo);//启动程序

            Console.WriteLine("程序启动啦");
            Console.ReadKey();
        }
		

C#被启动的程序的代码

        static void Main(string[] args)
        {
            Console.WriteLine(args[0]);//仅打印一下传递过来的字符串就行了
            Console.ReadKey();
            Console.ReadKey();

		}

效果就是上面的图片

解决方案

将里面的双引号进行转义

代码在23行

在这里插入图片描述

            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("dst", "ddd");
            dic.Add("dasdst", "ddd");
            var requesDataStr = JsonConvert.SerializeObject(dic);

            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "MD5Encryption.exe"; //启动的应用程序名称

            requesDataStr = requesDataStr.Replace("\"","\\\"");
            
            startInfo.Arguments = @requesDataStr;
            Process.Start(startInfo);

            Console.WriteLine("程序启动啦");
            Console.ReadKey();

将字符串替换为另外一个字符串

代码第24行
在这里插入图片描述字符串替换

            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("dst", "ddd");
            dic.Add("dasdst", "ddd");
            var requesDataStr = JsonConvert.SerializeObject(dic);

            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "MD5Encryption.exe"; //启动的应用程序名称
            
            requesDataStr = requesDataStr.Replace("\"", "#");

            startInfo.Arguments = @requesDataStr;
            Process.Start(startInfo);

            Console.WriteLine("程序启动啦");
            Console.ReadKey();

字符串再次替换

        static void Main(string[] args)
        {
            args[0] = args[0].Replace("#", "\"");
            Console.WriteLine(args[0]);
            }

修改字符串的编码格式

我不会,也暂时用不到这种方式。

不会就评论或者私信

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值