Thi*_*ier 6 c# string.format .net-4.0
我有一个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);
Run Code Online (Sandbox Code Playgroud)
最后," - "总是添加到我的格式化结果中,但仅在我的IdInvoice之前...(因此Id 10在我的参数中最终为-10)
现在有趣的部分...我硬编码一些字符串和......
如果我传递-1而不是Id,我有--1作为结果如果我写"香蕉"...我得到"-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);
Run Code Online (Sandbox Code Playgroud)
那就是我的文本可视化结果的复制/粘贴:
12346¿fakeDB¿false¿myScreenName¿123456¿Banana¿123456
你真的在"{5}"之前有一个额外的字符,称为软连字符.它是那些并不总是显示的怪异角色之一.如果您将光标放在"{5}"中的"{"后面并按向左箭头然后按退格键,它将实际删除它.那或者您可以尝试使用像Notepad ++这样的编辑器来显示它.我能够通过运行以下代码找到它
var t = @"{0}¿{1}¿{2}¿{3}¿{4}¿{5}";
foreach (var c in t)
{
Console.WriteLine((int)c + " " + c);
}
Run Code Online (Sandbox Code Playgroud)
打印出来的
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 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |