简体   繁体   English

如何使用带有参数名称数组作为参数的string.format?

[英]How to use string.format with array of arguments names as argument?

I want to create string from variables based on format of another string. 我想根据另一个字符串的格式从变量创建字符串。 It passes only string names, not references. 它仅传递字符串名称,而不传递引用。 Ref is not working. Ref无效。 What can i do? 我能做什么?

var format = "city, post_code, street, building_number,name"
var city = model["City"];
var post_code = model["Post_Code"];
var street = model["Street"];
var building_number = model["Building_Number"];
var name = model["Name"];
var arguments = format.Split(",");
var s = String.Format("{0} {1} {2} {3} {4}", new object[] {  arguments[0],  arguments[1], arguments[2], arguments[3], arguments[4] });

You're trying to use strings as variable names. 您正在尝试使用字符串作为变量名。 C# is not PHP. C#不是PHP。

What you actually want is string interpolation: 您真正想要的是字符串插值:

var s = $"{city}, {post_code}, {street}, {building_number}, {name}";

Now if you want this format string to be variable, see: 现在,如果您希望此格式字符串是可变的,请参见:

Not sure about the expected result/functionality here. 在这里不确定预期的结果/功能。

Is format a static Information or can it vary? 格式是静态信息还是可以变化? I interpreted the question as the later is inteded. 我将这个问题解释为稍后的意思。 A (quite basic) solution could be: 一个(非常基本的)解决方案可能是:

    public void foo(DataRow model, String format = "city,post_code,street,building_number,name")
    {
        var arguments = format.Split(',');

        var val1 = model[arguments[0]];
        var val2 = model[arguments[1]];
        var val3 = model[arguments[2]];
        var val4 = model[arguments[3]];
        var val5 = model[arguments[4]];

        var s = $"{val1} {val2} {val3} {val4} {val5}";
    }

You are not using the String.Format correctly. 您没有正确使用String.Format Modify your code like this 像这样修改您的代码

var s = String.Format("{0} {1} {2} {3} {4}", arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM