Вопрос по Split в c#

irving zisman

Client
Регистрация
18.05.2017
Сообщения
231
Реакции
29
Баллы
28
Подскажите, как в этом коде результат положить не в переменные проекта, а в переменные C# ?

C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = true;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
        project.Variables[variableGroupPair.Item2].Value = splitResult[splitIndex];
    else project.Variables[variableGroupPair.Item2].Value = "";
}
 
  • Оценить
Реакции: Rimen
C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = true;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
string result = "";
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
        result = splitResult[splitIndex];
    else
       result= "";
}
 
C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = true;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
string result = "";
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
        result = splitResult[splitIndex];
    else
       result= "";
}
Спасибо за код.
Но при атком исполнении переменные v0-v4 внутри с# не существуют.
в переменную result по-очереди попадают нужные данные, но они не раскладываются на переменные.
что не так делаю?
 
@Rimen Если на скорую руку, то можно 1-ый вариант кода модернизировать так:
C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = false;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
        project.Variables[variableGroupPair.Item2].Value = splitResult[splitIndex];
    else project.Variables[variableGroupPair.Item2].Value = "";
}

var v0 = project.Variables["v0"].Value;
var v1 = project.Variables["v1"].Value;
var v2 = project.Variables["v2"].Value;
var v3 = project.Variables["v3"].Value;
var v4 = project.Variables["v4"].Value;

// Проверяем:
return v0 + "|" + v1 +"|" + v2 + "|" + v3 + "|" +v4;
 
  • Оценить
Реакции: doc и Rimen
@Rimen Если на скорую руку, то можно 1-ый вариант кода модернизировать так:
C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = false;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
        project.Variables[variableGroupPair.Item2].Value = splitResult[splitIndex];
    else project.Variables[variableGroupPair.Item2].Value = "";
}

var v0 = project.Variables["v0"].Value;
var v1 = project.Variables["v1"].Value;
var v2 = project.Variables["v2"].Value;
var v3 = project.Variables["v3"].Value;
var v4 = project.Variables["v4"].Value;

// Проверяем:
return v0 + "|" + v1 +"|" + v2 + "|" + v3 + "|" +v4;
Если речь о костылях, то можно сделать так чтобы не задействовать лишние локальные переменные проекта:
C#:
Развернуть Свернуть Копировать
string text = project.ExecuteMacro(project.Variables["time"].Value);
var splitters = " ".ToCharArray();
var allowEmptyEntries = false;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "v0"),
    new Tuple<string, string>("1", "v1"),
    new Tuple<string, string>("2", "v2"),
    new Tuple<string, string>("3", "v3"),
    new Tuple<string, string>("4", "v4"),
};

var v0 = "";
var v1 = "";
var v2 = "";
var v3 = "";
var v4 = "";

var splitResult = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (var variableGroupPair in variableGroupPairs)
{
    int splitIndex;
    if (int.TryParse(variableGroupPair.Item1, out splitIndex) && splitIndex >= 0 && splitIndex < splitResult.Count)
    {
        if (v0 == "")
            v0 = splitResult[splitIndex];
        else if (v1 == "")
            v1 = splitResult[splitIndex];
        else if (v2 == "")
            v2 = splitResult[splitIndex];
        else if (v3 == "")
            v3 = splitResult[splitIndex];
        else if (v4 == "")
            v4 = splitResult[splitIndex];


    }
}

// Проверяем:
return v0 + "|" + v1 + "|" + v2 + "|" + v3 + "|" + v4;

но решение сложно назвать изящным, хоть и рабочее :ah:
 
  • Оценить
Реакции: Sergodjan

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)