1

本质上,我有一个字符串,其中包含要传递给 String::Format() 的占位符,如下所示:

"The {0} brown {1} jumped over the {2} {3}."

我还有另一个逗号分隔的字符串,其中包含我希望填写到格式占位符的字符串,例如:

"quick,fox,lazy,dog"

因此,填充格式字符串似乎很自然,我将Split(',')使用第二个字符串,并将其作为第二个参数传递给Format(first_str, second_split_array);

但是拆分第二个数组会产生一个 System::Array^ Format() 将其视为一个对象,因此很生气并告诉我我的索引必须小于或等于传递的参数数。

最后我听说,String.Format()可以使用数组作为第二个参数,所以......我必须做什么才能以 Format() 将看到所有参数的方式拆分字符串?

编辑:

这里的想法是每次索引元素的数量都不相同。我试图实现的目标是获取从服务器发送的数据并将其填充到模板中。服务器发回一个逗号分隔的列表和一个模板名称。因此,对于快速狐狸示例,它会发送我上面的内容,但其他时候它会发送错误,它使用:

"An error has occurred: {0} (Details: {1})"

和服务器参数"Error Name,Error text description and such."

4

2 回答 2

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;
}

输出:

敏捷的棕色狐狸跳过了懒惰的狗。

于 2012-10-20T18:25:18.407 回答
0

这可能是因为您将 aarray<String^>^作为第二个参数传递给String::Format. 如果您希望它的重载String::Format将数组作为第二个参数(并使用数组中的每个元素作为格式化项),则需要传递一个array<Object^>^(其中每个Object^都是 a String^)。

于 2012-10-20T18:13:54.870 回答