我有一个像这样的MVC3 HtmlHelper扩展:
public static MvcHtmlString ShowInfoBar(this HtmlHelper helper, string message, InfoMessageType messageType)
{
return MvcHtmlString.Create(String.Format(@"<script type=""text/javascript"">$(document).ready(function () { gtg.core.showInfoBar('{0}', '{1}'}; );</script>", message, messageType.ToString().ToLower()));
}
Run Code Online (Sandbox Code Playgroud)
价值message是"The product "Product Name" was saved successfully."
价值messageType是info.
它一直在说 Input string was not in the correct format.
我卡住了?
我如何在coffeescript中使用string.format()或sprintf()?
我正在使用此方法来形成json字符串,这工作正常.但如果它包含更多属性,我无法处理.还有比这更好的方法吗?
string.Format("{0}{1}longUrl{1}:{1}{2}{1}{3}", "{", "\"", longUrl,"}");
Run Code Online (Sandbox Code Playgroud)
输出是
{"longUrl":"http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"}
Run Code Online (Sandbox Code Playgroud) 将string.format的常用格式(例如datetime)拉成可访问的常量的优雅方法是什么?
理想情况下,我想做类似以下的事情,但是当我尝试使用此代码时,我收到以下错误.
var now = DateTime.Now;
var format = "yyyy-MM-dd";
Console.WriteLine(string.Format("The date is {1:{0}}", format, now));
Run Code Online (Sandbox Code Playgroud)
[System.FormatException:输入字符串的格式不正确.]在Program.Main():第9行
这背后的原因是某些API需要特定的日期时间格式.我希望能够引用一个地方来获得这种格式,这样所有调用都可以.
我意识到以下内容会起作用,但它看起来并不优雅.
Console.WriteLine(string.Format("The date is {1:" + format + "}", format, now));
Run Code Online (Sandbox Code Playgroud) 使用String.format%d及其变体,我们可以轻松地格式化原始整数和长整数.但是,这些格式选项是否与BigInteger完美配合?
我做了一些测试,它们似乎运行良好,例如:
public class Test6 {
public static void main(final String args[]) {
final java.math.BigInteger b = java.math.BigInteger.TEN.pow(999999);
System.out.println(String.format("%,d", b));
}
}
Run Code Online (Sandbox Code Playgroud)
但是有什么值得注意的吗?
我最近从Lua 5.2.3升级到5.3.1但我注意到string.format如果它尝试格式化float使用我的所有脚本执行开始失败%d
local anExampleString = string.format("Sample Number: %d",10.100000001) -- Fails on 5.3.1, works on 5.2.3
local aWorkingString = string.format("Sample Number: %.0f",10.100000001) -- Works on 5.3.1
Run Code Online (Sandbox Code Playgroud)
这是设计的吗?我似乎无法在任何地方找到变更记录.
当以科学格式显示数字时,我还没有找到一种方法只获取 3 的倍数的指数。我也没有成功编写一个简单的自定义格式化函数。
这是一个简单的例子:
使用 python 的科学记数法的正常行为.format():
numbers = [1.2e-2, 1.3e-3, 1.5e5, 1.6e6]
for n in numbers:
print("{:.E}".format(n))
Run Code Online (Sandbox Code Playgroud)
>>> 1.20E-02
1.30E-03
1.50E+05
1.60E+06
Run Code Online (Sandbox Code Playgroud)
但是,我需要以下输出:
>>> 12.00E-03
1.30E-03
15.00E+06
1.60E+06
Run Code Online (Sandbox Code Playgroud)
有谁知道我获得所需格式的便捷方法?
是否可以使用Python的str.format(key=value)语法来仅替换某些键.
考虑这个例子:
my_string = 'Hello {name}, my name is {my_name}!'
my_string = my_string.format(name='minerz029')
Run Code Online (Sandbox Code Playgroud)
返回
KeyError: 'my_name'
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
我有一个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
我正在从具有 8 个精度的数据文件中读取数据,然后在插入一些值之后,我将它们保存起来,就像 float_format 选项不起作用的地方一样,
df.to_csv('data.dat',sep=' ', index=False, header=False, float_format="%.8f")
Run Code Online (Sandbox Code Playgroud)
结果文件看起来像
0.02506602 0.05754493 0.36854688
0.02461631 0.0599653 0.43078098
0.02502534 0.06209149 0.44955311
0.4267356675182389 0.1718682822340447 0.5391386354945895
0.426701667727433 0.17191008887193007 0.5391897818631616
0.4266676661681287 0.17195189807522643 0.5392409104354972
Run Code Online (Sandbox Code Playgroud)
前 3 行在数据文件中,接下来的 3 行是新的内插值。我希望所有值的长度相同。这里出了什么问题,我该如何解决?
另外:如果我可以为不同的列以不同的方式控制浮点精度,那就太好了。
string.format ×10
c# ×4
python ×3
string ×2
.net-4.0 ×1
biginteger ×1
coffeescript ×1
java ×1
lua ×1
lua-5.3 ×1
node.js ×1
pandas ×1
printf ×1
printing ×1