получить значения из строки - PullRequest
0 голосов
/ 17 марта 2011

в моей переменной:

string selectedObjects;

У меня есть одно длинное значение, например:

"123;132;213;231;"

я хочу получить значения 4 раза как: "123;" , "132;" , "213;" and "231;".

я пробовал с foreach как:

public ActionResult ShowHistory(string selectedObjects)
    {
        foreach (string item in selectedObjects)
        {
            item = selectedObjects.Split(';');
        }

но это не работает. как я могу это сделать?

Ответы [ 7 ]

1 голос
/ 17 марта 2011

Поток неверный. Split возвращает массив, через который вы должны выполнить итерацию, используя foreach, если это ваш выбор. Итак:

foreach (string item in selectedObjects.Split(';'))
{
    // do whatever you want with the items
}
1 голос
/ 17 марта 2011

Вы можете использовать регулярное выражение:

foreach (Match m in Regex.Matches("123;132;213;231;", @"\d+;"))
    string value = m.Value; //Do something worthwhile with the value.

Все остальные ответы неверны или излишни - если я что-то упустил.

0 голосов
/ 17 марта 2011

Метод Split возвращает массив строк, попробуйте что-то вроде этого

string selectedObjects = "123;132;213;231;";
string[] s = selectedObjects.Split(';');

foreach (string item in s )
{
    Console.Writeline(item.ToString());
}
0 голосов
/ 17 марта 2011
foreach(string item in selectedObjects.Split(new [] {';'}, 
                                             StringSplitOptions.RemoveEmptyEntries)
                                      .Select( x=> x+";"))
{
   //process item
}
0 голосов
/ 17 марта 2011

Split возвращает массив string.

string selectedObjects = ...;

foreach (string item in selectedObjects.Split(';'))
{
   // do work
}
0 голосов
/ 17 марта 2011

Вам нужно снова добавить точку с запятой после разбиения.

public ActionResult ShowHistory(string selectedObjects)
{
    var items = selectedObjects.Split(';')
                               .Where(i => !string.IsNullOrEmpty(i))
                               .Select(i => i + ";");
    ...
}

Или (если вы можете гарантировать точный формат)

public ActionResult ShowHistory(string selectedObjects)
{
    var items = selectedObjects.TrimEnd(';')
                               .Split(';')
                               .Select(i => i + ";");
    ...
}
0 голосов
/ 17 марта 2011
public ActionResult ShowHistory(string selectedObjects)
{
    foreach (string tempItem in selectedObjects.Split(new []{';'}, StringSplitOptions.RemoveEmptyEntries))
    {
        string item = tempItem + ";"; // Add back on the ; character
    }
    // .. do something

Требуется RemoveEmptyEntries , в противном случае вы получите пустую строку в конце (потому что ваша входная строка заканчивается на ";"). Кроме того, string.Split не сохраняет разделитель char, поэтому вам нужно добавить его обратно, если вы хотите (следовательно, tempItem).

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