我正在尝试使用该str.format()函数在列中打印矩阵。
这是出错的行:
>>>> "{!s:4}{!s:5}".format('j',4,3)
'j 4 '
>>>> "{!s:4}{!s:5}".format(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> b
('dat', 'is')
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:我想我知道问题是什么:我传递一个包含两个元素的元组,而不是作为一个包含一个元素的元组传递给函数,我的原始元组。因此出现此错误。所以问题是如何将这个元组传递给格式函数......
我想知道这是否可能,如果是的话,如何实现它.
我知道该String.Format函数允许您为参数指定格式,如下所示:
String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
但我想知道以所需格式提供的最佳方式(例如"yyyy-MM-dd")最终会得到一个如下工作的功能(不起作用,但显示我想要完成的工作) ):
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
return String.Format("{0} - {1:{2}}", filename, DateTime.Now, DateTimeFormat);
}
Run Code Online (Sandbox Code Playgroud)
我想我可以放一个假的占位符并做String.Replace第一个:
string formatString = "{0} - {1:{FMT}}";
formatString = formatString.Replace("{FMT}", DateTimeFormat);
Run Code Online (Sandbox Code Playgroud)
但我很想知道是否有更好的方法来完成我想要做的事情.
谢谢!!
我有以下问题.
我从一个sql存储过程收到一些列.在xls接口中以格式导出它们之后,我们将一些信息在连接后记录到sql表中.在c#我们使用该string.format方法连接一定数量的列:ex:
string.Format("{0}+{1}", "column1", "column2");
output: column1column2
Run Code Online (Sandbox Code Playgroud)
我希望能够在列之间插入管道或任何其他字符.输出应该是这样的:
column1|column2
Run Code Online (Sandbox Code Playgroud) 我正在寻找String.Format或ToString()只decimal得到小数部分。
'123.56m => "56"
请注意以下潜在的愚蠢问题:
我有一个方法,使用String.format()方法格式化一些文本.目前,它接收两个参数,所以我有两个"%s"参数来创建我想要的任何文本.
但有人可能想用我的方法使用3个参数,或4或100.如何将传递的参数的长度作为varargs获取到String.format()方法的长度,以便在传递3个参数的情况下,将有3个"%s"而不是当前的2个; 或4或100.
如何获取传递给String.format()方法的参数数量,以便其中的文本根据需要自动添加"%s"?因为参数只是作为常规参数传递,而不是作为数组或类似的传递.如何获取参数数组的长度?
PS.这很重要 - 我不是在谈论获取(String ...参数) - 没有这样的事情 - 当有人调用你的方法时,它使用实际参数,"String ... arguments"不可用于抓取和获得它的长度.
我意识到这是一个制定得很糟糕的问题,因为我没有在我面前的代码进一步解释,但这已经困扰了我很长一段时间 - 你如何获得传递给方法的参数数量?
对于这样的事情:
String.format(SomeObject.SomeString, param1, param2,...,param 100)
Run Code Online (Sandbox Code Playgroud)
编辑:SomeObject.SomeString声明如下:
String SomeString = "Blah blah %s blah blah blah %s";
所以它有两个正在硬编码的参数.
当有人使用它时,你如何自定义SomeObject.SomeString以便"知道"已经将多少参数传递给String.format()方法(以便SomeObject.SomeString知道动态添加多少%s)?
我使用以下代码行收到此错误,
int numberStored = 9;
record.VALUE = string.Format("{\"FIELDS\":[{\"ELEMENT_ID\":\"275887826\",\"VALUE\":\"{0}\"}]}", numberStored.ToString(), 0);
Run Code Online (Sandbox Code Playgroud)
如果我替换{0}并将9直接放入,这样可以正常工作,但显然我不希望它像这样硬编码.我能看到的这个问题以前的答案似乎没有帮助我.
我有一种情况需要做以下事情 -
的String.Format( "{0}",{1}, "嗨!")
(这只是我想要实现的一个非常简单的版本)
我想要的输出是 -
嗨!
我得到的输出是 -
{1}
String.Format("{0}","{1} Atul {2}","嗨!","Kumar")我希望输出为 - Hi Atul Kumar