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

Vadimas

Новичок
Регистрация
06.02.2018
Сообщения
13
Благодарностей
1
Баллы
1
Иногда не проходят элементарные сравнения двух текстовых переменных в блоке if, например нужно сравнить 2 имени последнее и текущее на равенство. У меня даже если они равны всегда условие:
{-Variable.lastPrevious-}=={-Variable.name-}
дает ложь, причем если меняю его на {-Variable.lastPrevious-}!={-Variable.name-} или даже так
{-Variable.lastPrevious-}>={-Variable.name-} тоже (хотя строки нельзя сравнивать численно).
В чем тут проблема?
 

SanchoPancho

Client
Регистрация
09.12.2015
Сообщения
165
Благодарностей
82
Баллы
28
Нужно заключать в кавычках текстовые переменные
'{-Variable.lastPrevious-}'=='{-Variable.name-}'
или
"{-Variable.lastPrevious-}"=="{-Variable.name-}"
 
Последнее редактирование:
  • Спасибо
Реакции: CER, Solomon21 и Vadimas

Vadimas

Новичок
Регистрация
06.02.2018
Сообщения
13
Благодарностей
1
Баллы
1

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
говорит, строки нельзя сравнивать численно и сравнивает численно)
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 349
Благодарностей
9 090
Баллы
113
Иногда не проходят элементарные сравнения двух текстовых переменных в блоке 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
 

heks

Client
Регистрация
01.10.2013
Сообщения
1 203
Благодарностей
316
Баллы
83
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит
 
Последнее редактирование:

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит
Вы цифры сравниваете как текст.
Именно поэтому 4 больше 31. Потому как текст сравнивается по другой логике. Можете погуглить как это работает, для общего развития.

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

UPD.: в зенке все переменные - это текст. И проводя над ними разнообразные операции, а особенно парся/получая цифры из разных источников, это надо помнить.
 
Последнее редактирование:

heks

Client
Регистрация
01.10.2013
Сообщения
1 203
Благодарностей
316
Баллы
83
Предлагаешь текст с помощью С преобразовать в числовое значение и только после этого сравнивать?
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 920
Благодарностей
1 123
Баллы
113
давно заметил такой косяк он происходит уже давно. Не помогают как двойные кавычки так и одинарные.
Зенка читает первое число только, а не все число
без кавычек иногда тоже самое происходит
Строки сравниваются посимвольно в вашем примере "4" и "35" строки. Т.к. переменные зп строки по умолчанию, все верно выводится, что "4">"35". Вариант только преобразовывать в числа и сравнивать.
 
  • Спасибо
Реакции: heks

finista

Client
Регистрация
10.10.2012
Сообщения
365
Благодарностей
57
Баллы
28
Подскажите, получилось найти решение как сравнить две переменные больше и меньше?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
Подскажите, получилось найти решение как сравнить две переменные больше и меньше?
в старт посте уже показаны примеры на равно, не равно, больше или равно. Также можно и меньше
 
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
109687


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

сравнение строк:
string s1 = project.Variables["temp"].Value;
string s2 = project.Variables["tempValue"].Value;
bool result;
result = s1 != s2;
if (!result) return null;
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
673
Баллы
113
Вообще в шарпе строки вот так сравнивают

C#:
string text = "текст";
string text2 = "текст";
return text.Equals(text2);
 

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