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 }
我有一个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 }