Проблема с циклом: присваивайте данные различным строкам в цикле - PullRequest
0 голосов
/ 09 октября 2009

У меня есть строка, которая состоит из разных полей. Поэтому я хочу получить другой текст и назначить каждый из них в поле.

Пример: Привет Аллан 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 ]

2 голосов
/ 09 октября 2009

Если я правильно понимаю, у вас есть строка с заполнителями, и вы хотите поместить другую строку в эти заполнители:

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 голос
/ 09 октября 2009

Для меня это не похоже на проблему, которую можно решить с помощью петли. Существенная проблема заключается в том, что цикл может работать, только если вы выполните точно такую ​​же операцию для элементов в цикле. Если ваша проблема не подходит, вы получите в цикле дюжину строк кода для обработки особых случаев, что можно было бы написать более коротким способом без цикла.

Если вам нужно задать только две или три строки (что должно быть в случае, если у вас есть именованные переменные), присвойте их по индексам строки разделения Альтернативой может быть использование регулярных выражений для сопоставления с некоторыми шаблонами, чтобы сделать его более устойчивым, если отсутствует одна из ожидаемых строк.

Другой возможностью было бы установить атрибуты для членов или свойства, такие как:

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

И используйте отражение, чтобы заполнить их. Здесь вы можете создать цикл для всех свойств, имеющих этот атрибут, поскольку мне кажется, что вы хотите создать цикл: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...