标签: string.format

是否有更多的Pythonic方法使用string.format将字符串填充到可变长度?

我想将一个字符串填充到一定长度,具体取决于变量的值,我想知道是否有一种标准的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)

除了字符串连接之外,还有一种标准的,内置的方法吗?第二种方法应该有效,所以我不确定它为什么会失败.

python string.format

3
推荐指数
2
解决办法
1165
查看次数

string.format(format,doubleValue),精度丢失

我有这个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方法使用所有精度

c# double string.format double-precision

3
推荐指数
1
解决办法
1067
查看次数

AppendFormat()或AppendLine()是更安全/更时尚的解决方案吗?

我一直在创建动态字符串以附加到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)

c# performance stringbuilder string.format append

3
推荐指数
1
解决办法
1694
查看次数

如何在 Java 中使用 NumberFormat 指定小数位数?

让我们运行这段代码:

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 中实现同样的事情?

java string.format locale number-formatting

3
推荐指数
1
解决办法
1397
查看次数

string.Format()空白零

在我的应用程序中,有可能使用该string.Format()函数格式化字符串.我希望在结果为零时添加返回空白的可能性.

据我所知,可以使用代码执行此操作:0.toString("0;; ");,但正如我已经提到的,我需要使用该string.Format()函数(因为它必须能够使用例如{0:P}百分比的格式.

有谁知道如何使用该string.Format()函数消隐零值?

谢谢你,彼得

c# string.format zero

2
推荐指数
2
解决办法
9910
查看次数

使用BoundField.DataFormatString来格式化货币数据,没有$和负数应该在()中

我有一个gridview,我正在填写会计人员的数据,他们希望我格式化货币值,使它们显示没有$,用逗号分隔数字和负号由()包围

例如:

 12345.67 = 12,345.67
-12345.67 =(12,345.67)

我发现很多关于互联网的例子让我很接近但是在负面附近没有()或者包含$.

c# asp.net string.format boundfield

2
推荐指数
1
解决办法
2万
查看次数

如何检测String.Format()中缺少的动态参数

string myString = string.Format("{0}{1}", "foo");
Run Code Online (Sandbox Code Playgroud)

这编译但在运行时失败.我知道为什么,不用担心.任何人都知道一个宏或一个工具,它会检查我的整个解决方案,以便在编码时找到每一个这样的...分心?简单的只检查表达式是否不是变量就足够了.它可能适用于FxCop或StyleCop,但越简单就越好:-D

谢谢

c# string string.format

2
推荐指数
1
解决办法
403
查看次数

C#string.Format 1000,00到1.000,00

如何将Numbers更改为以下内容:

1000应该成为1.000,00,当我有700,它必须是700,00.
当我尝试string.Format("{0:0,000.00}", Number),700变成0.700,00,所以它不好.

c# string string.format

2
推荐指数
3
解决办法
1万
查看次数

将数字转换为逗号分隔值

我需要以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.

c# string.format

2
推荐指数
1
解决办法
8762
查看次数

String.Format - 整数,千位分隔符,无小数

什么是最简单的String.Format模板来格式化一个千位分隔符(逗号)并且没有小数位的整数?美国文化.所需格式的示例:

1200 = 1,200

900 = 900

8 = 8
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net string.format

2
推荐指数
1
解决办法
1823
查看次数