0
Каков наилучший способ сравнения 2 строк для равенства в V +. Есть ли функция стиля strcmp
? Можно ли получить значение на основе порядка строк lexicographical
?Сравнить 2 строки в V +
Каков наилучший способ сравнения 2 строк для равенства в V +. Есть ли функция стиля strcmp
? Можно ли получить значение на основе порядка строк lexicographical
?Сравнить 2 строки в V +
Там нет функции зЬгстра, вы можете сделать 2 вещи:
Если вы хотите прямое булево значение вы можете использовать ==
:
$in1 = "lalala"
$in2 = "lalala"
IF $in1 == $in2 THEN
TYPE "LALALA"
END
Если вы хотите функцию, которая возвращает число, основанное на лексикографическом порядке, которое вам нужно будет написать, достаточно:
.PROGRAM strcmp($a, $b, result)
AUTO len.a, len.b, pos
len.a = LEN($a)
len.b = LEN($b)
pos = 1
; Loop to the end of the string that is the same
WHILE (pos-1 < len.a) AND (pos-1 < len.b) AND (ASC($a,pos) == ASC($b,pos)) DO
pos = pos+1
END
; If they are still the same at the end return 0
IF (ASC($a,pos) == ASC($b,pos)) THEN
result = 0
RETURN
END
; If $a is -1 then we reached the end of a before b
IF (ASC($a,pos) == -1) THEN
result = -1
RETURN
END
; If $b is -1 then we reached the end of b before a
IF (ASC($b,pos) == -1) THEN
result = 1
RETURN
END
; Otherwise get the comparison of the current value of $a and $b
result = ASC($a,pos)-ASC($b,pos)
RETURN
.END