Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / replace в цикле. / 25 сообщений из 33, страница 1 из 2
10.02.2015, 10:48
    #38875549
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
Доброе утро!
Вот такая ситуация
как осуществить replace в выражении в цикле? Выражение имеет вид например {1}*{2}-{3}
типа такого где отмечено красным
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  int count = 0;
            foreach (var column in srcFields.Split(','))
            {
                var srcTableAlias = column.Split('.')[0];
                var srcTable = Outt.Data.Tables[GetTableIndex(srcTableAlias)];
               
                var rows = srcTable.Select(srcfilter);
                if (rows.Length == 1)
                {
                    var srcRowIndex = srcTable.Rows.IndexOf(rows[0]);
                    string value;
                    value = GetValue(Outt.Data, srcRowIndex, column).ToString();
                [color=red] expression = expression.Replace("{"+count+"}",value[count]);[/color]
                }
                count++;
            }
...
Рейтинг: 0 / 0
10.02.2015, 11:38
    #38875646
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_man,
Ничего не понял, что вам требуется.

Давайте так - входные данные (только уберите левый мусор (Data.Tables) и прочее)
Потом, что хочется получить на выходе.
...
Рейтинг: 0 / 0
10.02.2015, 11:47
    #38875664
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
входные данные: ячейки со значениями: 1.num,2.num,3.num
я их считываю
дополнительно у меня есть строка с выражением {1}*{2}-{3}
в выражении нужно заменить {n} на соответствующее значение value[n] и затем вычислить результат
...
Рейтинг: 0 / 0
10.02.2015, 11:55
    #38875679
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
я тоже ничего не понял.
в посте есть вопрос
в посте есть ответ

а проблема в чем?
...
Рейтинг: 0 / 0
10.02.2015, 11:56
    #38875683
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_man,

Зачем замена, есть же метод проще:

Код: c#
1.
2.
3.
4.
5.
6.
7.
string calculationTemplate = "{0}*{1}+{2}";

int N1 = 3;
int N2 = 4;
int N3 = 5;

string expressonWithValues = string.Format(calculationTemplate, N1, N2, N3);
...
Рейтинг: 0 / 0
10.02.2015, 11:58
    #38875688
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manвходные данные: ячейки со значениями: 1.num,2.num,3.num
я их считываю
дополнительно у меня есть строка с выражением {1}*{2}-{3}
в выражении нужно заменить {n} на соответствующее значение value[n] и затем вычислить результат
))) а {1}*{2}-{3} - точно выражение?
А зачем весь код, если Вы уже заранее знаете значения в ячейках? Я это к чему...3.num - это значение или его "маска"?
...
Рейтинг: 0 / 0
10.02.2015, 11:59
    #38875690
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
нужно это сделать в цикле, там же где вычисляются value[n]
...
Рейтинг: 0 / 0
10.02.2015, 12:01
    #38875696
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
или можно создать массив записать туда values , потом заменить в исходном выражении и вычислить его?
...
Рейтинг: 0 / 0
10.02.2015, 12:01
    #38875697
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
D129last_man,

Зачем замена, есть же метод проще:

Код: c#
1.
2.
3.
4.
5.
6.
7.
string calculationTemplate = "{0}*{1}+{2}";

int N1 = 3;
int N2 = 4;
int N3 = 5;

string expressonWithValues = string.Format(calculationTemplate, N1, N2, N3);


Теперь допер что такое выражение ))) "Выражение" может меняться? string.Format(calculationTemplate, N1, N2, N3); не подходит - ТС в результате видимо нужно получить число (умножить и просуммировать значения).
...
Рейтинг: 0 / 0
10.02.2015, 12:05
    #38875705
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
выражение - это подстановочное выражение, куда нужно подставить вычисленные значения
...
Рейтинг: 0 / 0
10.02.2015, 12:06
    #38875707
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
BelavikТеперь допер что такое выражение ))) "Выражение" может меняться? string.Format(calculationTemplate, N1, N2, N3); не подходит - ТС в результате видимо нужно получить число (умножить и просуммировать значения).
Я подобные вещи не делал, это надо Code Dome и что-то типа динамических сборок подключать (?)...
Если топикастер пишет свой интерпритатор своего же языка программирования - то ... безумству храбрых...
:-)

Вопрос был про замену в строке.
...
Рейтинг: 0 / 0
10.02.2015, 12:08
    #38875713
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_man,

"ячейки со значениями: 1.num,2.num,3.num"...не совсем понял.
Например, есть ячейка со значением "1.5,2.7,1.4", требуется "взять" 5,7 и 4, и, в соответствии с выражением "{0}*{1}+{2}" получить 5*7+4=39. Я правильно понял?
...
Рейтинг: 0 / 0
10.02.2015, 12:10
    #38875716
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manвыражение - это подстановочное выражение, куда нужно подставить вычисленные значенияприведенный код это вроде как делает. string.Format альтернативное решение. Так проблема-то в чем? как подставить или как ВЫЧИСЛИТЬ?
...
Рейтинг: 0 / 0
10.02.2015, 12:11
    #38875717
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
как подставить
...
Рейтинг: 0 / 0
10.02.2015, 12:12
    #38875724
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
Shocker.Pro,
выражение может отличаться от случая к случаю, м.б. 3 переменных, может, 5
на этой строчке у меня ошибка
...
Рейтинг: 0 / 0
10.02.2015, 12:19
    #38875735
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manShocker.Pro,
выражение может отличаться от случая к случаю , м.б. 3 переменных, может, 5
на этой строчке у меня ошибка
Вот с этого надо было начинать )))
...
Рейтинг: 0 / 0
10.02.2015, 12:26
    #38875752
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_man,

параметры можно передавать массивом
string.Format(строка, массив).
Соответственно, если в строке 3 позиции, то и массив должен быть из 3 элементов.
...
Рейтинг: 0 / 0
10.02.2015, 12:26
    #38875753
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
Shocker.Pro приведенный код это вроде как делает
надо наверно вынести за фигурные
string value;
value = GetValue(Outt.Data, srcRowIndex, column).ToString();
expression = expression.Replace("{"+count+"}",value[count]).ToString();
...
Рейтинг: 0 / 0
10.02.2015, 12:30
    #38875768
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
после expression.Replace("{"+1+"}",value[1]).ToString();
выражение каким было таким и осталось {1}*{2}-{3}
а нужно 123.45*{2}-{3}
...
Рейтинг: 0 / 0
10.02.2015, 12:32
    #38875773
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_man123.45
А 123.45 откуда взялось?
...
Рейтинг: 0 / 0
10.02.2015, 12:35
    #38875781
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
BelavikА 123.45 откуда взялось?
value[1]).ToString()
...
Рейтинг: 0 / 0
10.02.2015, 12:37
    #38875786
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manBelavikА 123.45 откуда взялось?
value[1]).ToString()
А почему не 45.123?
...
Рейтинг: 0 / 0
10.02.2015, 12:42
    #38875801
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manвыражение может отличаться от случая к случаю, м.б. 3 переменных, может, 5По-моему, сначала надо решить, что ты хочешь, а потом это уже программировать.

Что должно происходить, если подстановок меньше, чем аргументов?
Что должно происходить, если подстановок больше, чем аргументов?
...
Рейтинг: 0 / 0
10.02.2015, 12:46
    #38875808
last_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
Shocker.ProЧто должно происходить, если подстановок меньше, чем аргументов?
Что должно происходить, если подстановок больше, чем аргументов?
просто выход
...
Рейтинг: 0 / 0
10.02.2015, 12:47
    #38875812
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace в цикле.
last_manShocker.ProЧто должно происходить, если подстановок меньше, чем аргументов?
Что должно происходить, если подстановок больше, чем аргументов?
просто выход
куда?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / replace в цикле. / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]