Сравнение текстовых переменных

  • Автор темы Автор темы Vadimas
  • Дата начала Дата начала

Vadimas

Новичок
Регистрация
06.02.2018
Сообщения
13
Реакции
1
Баллы
1
Иногда не проходят элементарные сравнения двух текстовых переменных в блоке if, например нужно сравнить 2 имени последнее и текущее на равенство. У меня даже если они равны всегда условие:
{-Variable.lastPrevious-}=={-Variable.name-}
дает ложь, причем если меняю его на {-Variable.lastPrevious-}!={-Variable.name-} или даже так
{-Variable.lastPrevious-}>={-Variable.name-} тоже (хотя строки нельзя сравнивать численно).
В чем тут проблема?
 
Нужно заключать в кавычках текстовые переменные
'{-Variable.lastPrevious-}'=='{-Variable.name-}'
или
"{-Variable.lastPrevious-}"=="{-Variable.name-}"
 
Последнее редактирование:
  • Оценить
Реакции: CER, Solomon21 и Vadimas
Иногда не проходят элементарные сравнения двух текстовых переменных в блоке if, например нужно сравнить 2 имени последнее и текущее на равенство. У меня даже если они равны всегда условие:
{-Variable.lastPrevious-}=={-Variable.name-}
дает ложь, причем если меняю его на {-Variable.lastPrevious-}!={-Variable.name-} или даже так
{-Variable.lastPrevious-}>={-Variable.name-} тоже (хотя строки нельзя сравнивать численно).
В чем тут проблема?
http://zennolab.com/wiki/ru:logic

upload_2018-2-24_13-32-31.png
 
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит
 
Последнее редактирование:
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит

Вы цифры сравниваете как текст.
Именно поэтому 4 больше 31. Потому как текст сравнивается по другой логике. Можете погуглить как это работает, для общего развития.

Уберите из экшена IF кавычки, и посмотрите что будет.

UPD.: в зенке все переменные - это текст. И проводя над ними разнообразные операции, а особенно парся/получая цифры из разных источников, это надо помнить.
 
Последнее редактирование:
Предлагаешь текст с помощью С преобразовать в числовое значение и только после этого сравнивать?
 
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит
Строки сравниваются посимвольно в вашем примере "4" и "35" строки. Т.к. переменные зп строки по умолчанию, все верно выводится, что "4">"35". Вариант только преобразовывать в числа и сравнивать.
 
  • Оценить
Реакции: heks
Подскажите, получилось найти решение как сравнить две переменные больше и меньше?
 
Подскажите, получилось найти решение как сравнить две переменные больше и меньше?
в старт посте уже показаны примеры на равно, не равно, больше или равно. Также можно и меньше
 
109687


Вот и я столкнулся с такой досадой. Похоже на баг... Кто подскажет, как кодом заменить на сравнение строк? Почему кубик выводит по красной ветке, когда должен по зеленой?
 
Последнее редактирование:
Решение найдено!

сравнение строк:
Развернуть Свернуть Копировать
string s1 = project.Variables["temp"].Value;
string s2 = project.Variables["tempValue"].Value;
bool result;
result = s1 != s2;
if (!result) return null;
 
Вообще в шарпе строки вот так сравнивают

C#:
Развернуть Свернуть Копировать
string text = "текст";
string text2 = "текст";
return text.Equals(text2);
 

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