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

C# string.format add a "-" value?

我有一个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" ... 我得到“-banana” ...

我知道我可以用其他方式构建字符串...但我很好奇为什么会这样。

这是屏幕截图 ...

编辑:

那是我代码的 copy/paste

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);

这就是我的文本可视化结果的 copy/paste:

12346 假 DB 假 myScreenName 123456 香蕉 123456

您确实在“{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 }