循环问题:在循环中将数据分配给不同的字符串

时间:2009-10-09 10:17:52

标签: c# string loops

我有一个由不同字段组成的字符串。所以我想要做的就是获取不同的文本并将它们分配到一个字段中。

ex:Hello Allan IBM

所以我想做的是:

将这三个单词放在不同的字符串中,如

string Greeting = "Hello"
string Name = "Allan"
string Company = "IBM"

//all of it happening in a loop.
string data = "Hello Allan IBM"
string s = data[i].ToString();
string[] words = s.Split(',');
foreach (string word in words) {
    Console.WriteLine(word);
}              

有什么建议吗? 非常希望能尽快收到你的来信

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你有一个带有占位符的字符串,你想在这些占位符中添加不同的字符串:

var format="{0}, {1} {2}. How are you?";

//string Greeting = "Hello"
//string Name = "Allan"
//string Company = "IBM"

//all of it happening in a loop.
string data = ...; //I think you have an array of strings separated by ,

foreach( va s in data){
{
    //string s = data[i];//.ToString(); - it is already a string array
    string[] words = data[i].Split(',');

    Console.WriteLine(format, words[0], words[1], words[2]);
}

答案 1 :(得分:1)

对我而言,这听起来不像是一个可以通过循环解决的问题。基本问题是循环只有在循环中的项目上执行完全相同的操作时才能工作。如果您的问题不合适,您最终会在循环中使用十几行代码来处理特殊情况,这可能是在没有循环的情况下以较短的方式编写的。

如果只需要设置两个或三个字符串(如果已命名变量,则应该是这种情况),请从拆分字符串的索引中分配它们。另一种方法是使用正则表达式来匹配某些模式,以使其更加健壮,如果缺少其中一个预期的字符串。

另一种可能性是在成员或属性上设置属性,如:

[MyParseAttribute(/*position*/ /*regex*/)]
string Greeting {get;set;}

并使用反思来填充它们。在这里你可以在具有该属性的所有属性上创建一个循环,因为它听起来你很想创建一个循环: - )