1

基本的に、String :: Format()に渡すプレースホルダーを持つ文字列があります。

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

そして、フォーマットプレースホルダーに入力したい文字列を含む別のコンマ区切り文字列があります。

"quick,fox,lazy,dog"

したがって、フォーマット文字列を埋めるために2番目の文字列を入力し、それを;Split(',')の2番目の引数として渡すのは自然なことのように思われます。Format(first_str, second_split_array)

しかし、2番目の配列を分割するとSystem :: Array ^が生成され、Format()はこれを1つのオブジェクトとしてのみ認識します。したがって、怒り​​、私のインデックスは渡された引数の数以下でなければならないことを教えてくれます。

最後に聞いたのですString.Format()が、2番目の引数として配列を使用できるので... Format()がすべての引数として表示するように文字列を分割するにはどうすればよいですか?

編集:

ここでの考え方は、インデックス付けされた要素の数が毎回同じではないということです。私が達成しようとしている目標は、サーバーから送信されたデータを取得し、それをテンプレートに入力することです。サーバーは、コンマ区切りのリストとテンプレート名を送り返します。したがって、簡単なfoxの例では、上記のものを送信しますが、それ以外の場合は、たとえば、次を使用するエラーを送信します。

"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

これはおそらくarray<String^>^、の2番目の引数としてを渡しているためですString::Format。そのオーバーロードがString::Format2番目の引数として配列を取る(そして配列内の各要素をフォーマット項目として使用する)場合は、array<Object^>^(それぞれObject^String^)を渡す必要があります。

于 2012-10-20T18:13:54.870 に答える