C#string.format添加“ - ”值?

时间:2017-03-24 19:46:48

标签: c# .net-4.0 string.format

我有一个string.format问题......

我正在尝试将我的发票ID作为参数传递给我的程序......并且第6个参数总是以“ - ”结束,无论我做什么(我们必须使用¿因为旧程序)。 ..

     public static void OpenIdInvoice(string wdlName, string IdInvoice, Form sender){
        MessageBox.Show(string.Format("¿{0}",IdInvoice));
        proc.Arguments = string.Format("{0}¿{1}¿{2}¿{3}¿{4}¿­{5}",
            session.SessionId.ToString(),
            Session.GetCurrentDatabaseName(),
            session.Librairie,
            wdlName,
            "",
            IdInvoice
        );
        System.Windows.Forms.MessageBox.Show(proc.Arguments);

最后,“ - ”总是添加到我的格式化结果中,但仅在我的IdInvoice之前...(因此Id 10在我的参数中最终为-10)

现在有趣的部分......我硬编码了一些字符串......

如果我传递-1而不是Id,我有--1作为结果,如果我写“香蕉”......我得到“-banana”......

我知道我可以在其他地方构建字符串......但我对它为什么会发生感到好奇。

这是屏幕截图 minus banana ? ...

编辑:

这就是我的代码的复制/粘贴

var proc = new System.Diagnostics.ProcessStartInfo("Achat.exe");
        System.Windows.Forms.MessageBox.Show(string.Format("¿{0}",args));
        proc.Arguments = string.Format(@"{0}¿{1}¿{2}¿{3}¿{4}¿­{5}¿{6}",
            "12346", //session.SessionId.ToString(),
            "fake DB",//Session.GetCurrentDatabaseName().ToString(),
            "false", //session.Librairie.ToString(),
            "myScreenName", //wdl.ToString(),
            "123456",
            "Banana",
            "123456"
            //args.ToString(), 

        );
        System.Windows.Forms.MessageBox.Show(proc.Arguments);
        System.Windows.Forms.MessageBox.Show(args);

那就是我的文本可视化结果的复制/粘贴:

12346¿fakeDB¿false¿myScreenName¿123456¿Banana¿123456

1 个答案:

答案 0 :(得分:5)

你真的在“{5}”之前有一个额外的角色叫做soft hyphen。它是那些并不总是显示的怪异角色之一。如果您将光标放在“{5}”中的“{”后面并按向左箭头然后按退格键,它将实际删除它。那或者您可以尝试使用像Notepad ++这样的编辑器来显示它。我能够通过运行以下代码找到它

var t = @"{0}¿{1}¿{2}¿{3}¿{4}¿­{5}";
foreach (var c in t)
{
    Console.WriteLine((int)c + " " + c);
}
打印出来的

123 {
48 0
125 }
191 ¿
123 {
49 1
125 }
191 ¿
123 {
50 2
125 }
191 ¿
123 {
51 3
125 }
191 ¿
123 {
52 4
125 }
191 ¿
173 -
123 {
53 5
125 }