需要帮助来理解c#中的string.Format

时间:2013-05-24 07:39:23

标签: c# asp.net-mvc

我不是c#程序员但我想将一些代码从c#转换为php。 我无法理解下一行的正确含义。

i means my loop index
strVar.Add(string.Format("'{0}': '{1}'", (i + 1), fa["id"]));

我发现以下链接,但不是我要找的那个 C#: php sprintf equivalent

无法理解它们究竟是什么意思因为我是c#的新手 http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

4 个答案:

答案 0 :(得分:3)

这会产生一个字符串。假设i + 12fa["id"]567,则结果字符串为:

"'2': '567'"

{0}{1}是字符串中的占位符,它们会按照提供的顺序从其他参数替换为string.Format。因此{0}将替换为(i+1),而{1}将替换为fa["id"]

的值

请参阅:String.Format Method

  

Format方法的每个重载都使用复合格式   功能包括从零开始的索引占位符,称为格式   items,复合格式字符串。在运行时,每个格式项都是   替换为相应参数的字符串表示形式   在参数列表中。如果参数的值为null,则为格式   item被String.Empty替换。例如,以下调用   Format(String,Object,Object,Object)方法包括一种格式   包含三个格式项{0},{1}和{2}的字符串,以及一个参数   列表有三个项目。

答案 1 :(得分:2)

首先,您在custom numeric format strings的链接与此无关。

String.Format可用于格式化字符串(顾名思义)。您可以在字符串中使用格式项,这些项是用大括号括起来的数字。例如:

string text = String.Format("His name is {0}, he is {1} years old.", person.Name, person.Age);

将使用与数字相同的索引替换{num}的所有出现。由于person.Name是字符串{0}将替换为person.Name之后的第一个对象,依此类推。

答案 2 :(得分:1)

Format函数接受一个字符串和一个到多个参数,{'number'}表示该字符串应该带参数'number'并将其插入该位置。

F.i。 如果i = 1,您的代码片段会将“'2':fa [”id“]的值添加到您的strVar

(有关详情:http://msdn.microsoft.com/en-us/library/system.string.format.aspx

答案 3 :(得分:1)

string s = "THE VARIABLE";
string.format("Here is some text {0} when I put a bracket with numbers it represents the following variables string representation", s);

//Prints: Here is some text THE VARIABLE when I put a bracket with numbers it represents the following variables string representation

所以{0}表示将此替换为此后出现的第一个变量的字符串表示形式。 {1}说要取第二个。 另一种方法是使用:

string s = "World";
Console.PrintLine("Hello " + s + "!");
//Prints: Hello World!

在这种小格式中它是可读的,但是当你得到很多变量时,它真的会让人感到困惑,看看字符串会变成什么样。通过使用string.Format(),它将更容易阅读。

现在假设您有一个名为id的变量,并且您在php中有一个名为fa的数组,您希望使用id进行索引。使用string.Format()看起来像:

int id = 3;
Console.PrintLine(string.Format("fa[\"{0}\"]", id)); //Prints: fa["3"]
Console.PrintLine("fa[\"" + id + "\"]"); //Also prints fa["3"] but it is a lot harder to read the code.