我不是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
答案 0 :(得分:3)
这会产生一个字符串。假设i + 1
为2
且fa["id"]
为567
,则结果字符串为:
"'2': '567'"
{0}
和{1}
是字符串中的占位符,它们会按照提供的顺序从其他参数替换为string.Format
。因此{0}
将替换为(i+1)
,而{1}
将替换为fa["id"]
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.