基本上,我有一个字符串,其中包含我将传递给String :: Format()的占位符,如下所示:
"The {0} brown {1} jumped over the {2} {3}."
我还有另一个以逗号分隔的字符串,其中包含我希望填写到格式化占位符的字符串,如下所示:
"quick,fox,lazy,dog"
因此,填充格式字符串I Split(',')
第二个字符串,并将其作为Format(first_str, second_split_array)
中的第二个参数传递出来似乎很自然;
但是拆分第二个数组会产生一个System :: Array ^,Format()只看到一个对象,因此生气并告诉我我的索引必须小于或等于传递的参数数量。
最后我听说,String.Format()
可以使用数组作为第二个arg,所以...我需要做什么才能以Format()看到所有args的方式分割字符串?
修改
这里的想法是索引元素的数量每次都不相同。我想要实现的目标是从服务器发送数据并将其填入模板。服务器发回逗号分隔列表和模板名称。因此,对于快速狐狸的例子,它会发送我上面的内容,但其他时候它会发送,比方说,错误,它使用:
"An error has occurred: {0}
(Details: {1})"
和服务器参数"Error Name,Error text description and such."
答案 0 :(得分:2)
不确定问题是什么,你确实可以将一个字符串数组传递给String :: Format()。 String :: Split()方法可以很容易地生成一个:
int main(array<System::String ^> ^args)
{
String^ text = "quick,fox,lazy,dog";
array<String^>^ words = text->Split(',');
String^ result = String::Format("The {0} brown {1} jumped over the {2} {3}.", words);
Console::WriteLine(result);
return 0;
}
输出:
快速的棕色狐狸跳过懒狗。
答案 1 :(得分:0)
这可能是因为你将array<String^>^
作为第二个参数传递给String::Format
。如果您希望重载String::Format
以数组作为第二个参数(并使用数组中的每个元素作为格式项),则需要传递 array<Object^>^
(每个Object^
都是String^
)。