我想将一个字符串填充到一定长度,具体取决于变量的值,我想知道是否有一种标准的Pythonic方法可以使用string.format 迷你语言来完成.现在,我可以使用字符串连接:
padded_length = 5
print(("\n{:-<" + str((padded_length)) + "}").format("abc"))
# Outputs "abc--"
padded_length = 10
print(("\n{:-<" + str((padded_length)) + "}").format("abc"))
#Outputs "abc-------"
Run Code Online (Sandbox Code Playgroud)
我试过这个方法:
print(("{:-<{{padded_length}}}".format(padded_length = 10)).format("abc"))
Run Code Online (Sandbox Code Playgroud)
但它引发了一个IndexError: tuple index out of range例外:
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
print(("{:-<{{padded_length}}}".format(padded_length = 10)).format("abc"))
IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)
除了字符串连接之外,还有一种标准的,内置的方法吗?第二种方法应该有效,所以我不确定它为什么会失败.
我有这个double价值:
var value = 52.30298270000003
Run Code Online (Sandbox Code Playgroud)
当我把它转换成它时string,它失去了它的精度:
var str = string.Format("{0} some text...", value);
Console.WriteLine(str); // output: 52.3029827
Run Code Online (Sandbox Code Playgroud)
我的值的精度数double可能会在运行时更改.如何强制该string.Format方法使用所有精度?
我一直在创建动态字符串以附加到StringBuilder,如下所示:
StringBuilder sb = new StringBuilder();
string bla = "bla";
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud)
...但后来我注意到StringBuilder有一个AppendFormat()方法,它避免了" string.Format() ".所以我想知道AppendFormat()是否也像AppendLine()那样添加换行符(而不是Append(),而不是).
IOW,达到同样的效果:
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud)
...当使用AppendFormat()时,我需要使用两行,如下所示:
sb.AppendFormat("android:id=\"@+id/{0}\" ", bla);
sb.AppendLine();
Run Code Online (Sandbox Code Playgroud)
?
答案是肯定的 - 需要两行,或者我必须在对AppendLine()的调用中恢复显式使用string.Format().
实际上,至少有一种方法可以用AppendFormat()在一行中完成,即:
sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
...但是,这可能不比AppendLine(string.Format(...)更优雅
那么以下哪一项更好(更高性能)或更安全,或者无关紧要?
sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud) 让我们运行这段代码:
double number = 12345.678888;
String str1 = String.format(Locale.FRANCE, "%.10f", number);
String str2 = NumberFormat.getInstance(Locale.FRANCE).format(number);
System.out.println(str1);
System.out.println(str2);
Run Code Online (Sandbox Code Playgroud)
输出将是:
12345,6788880000
12 345,679
但这些都不是我想要的。我想指定小数位数,NumberFormat就像String.format()可以做的那样。我也尝试过DecimalFormat,但我认为这不是答案。
如果我正在编写 C# 代码,可以像这样简单地完成:
string str = string.Format(new CultureInfo("fr-FR"), "{0:#,##0.0000000000}", number);
Run Code Online (Sandbox Code Playgroud)
输出将是:
12 345,6788880000
我怎样才能在 Java 中实现同样的事情?
在我的应用程序中,有可能使用该string.Format()函数格式化字符串.我希望在结果为零时添加返回空白的可能性.
据我所知,可以使用代码执行此操作:0.toString("0;; ");,但正如我已经提到的,我需要使用该string.Format()函数(因为它必须能够使用例如{0:P}百分比的格式.
有谁知道如何使用该string.Format()函数消隐零值?
谢谢你,彼得
我有一个gridview,我正在填写会计人员的数据,他们希望我格式化货币值,使它们显示没有$,用逗号分隔数字和负号由()包围
例如:
12345.67 = 12,345.67
-12345.67 =(12,345.67)
我发现很多关于互联网的例子让我很接近但是在负面附近没有()或者包含$.
string myString = string.Format("{0}{1}", "foo");
Run Code Online (Sandbox Code Playgroud)
这编译但在运行时失败.我知道为什么,不用担心.任何人都知道一个宏或一个工具,它会检查我的整个解决方案,以便在编码时找到每一个这样的...分心?简单的只检查表达式是否不是变量就足够了.它可能适用于FxCop或StyleCop,但越简单就越好:-D
谢谢
如何将Numbers更改为以下内容:
1000应该成为1.000,00,当我有700,它必须是700,00.
当我尝试string.Format("{0:0,000.00}", Number),700变成0.700,00,所以它不好.
我需要以comma分开的格式转换数字以显示C#.
例如:
1000 to 1,000
45000 to 45,000
150000 to 1,50,000
21545000 to 2,15,45,000
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标C#?
我尝试了下面的代码:
int number = 1000;
number.ToString("#,##0");
Run Code Online (Sandbox Code Playgroud)
但它不起作用lakhs.
什么是最简单的String.Format模板来格式化一个千位分隔符(逗号)并且没有小数位的整数?美国文化.所需格式的示例:
1200 = 1,200
900 = 900
8 = 8
Run Code Online (Sandbox Code Playgroud)
谢谢!
string.format ×10
c# ×7
string ×2
.net ×1
append ×1
asp.net ×1
boundfield ×1
double ×1
java ×1
locale ×1
performance ×1
python ×1
zero ×1