Как VBScript оценивает строку больше, чем строка? - PullRequest
2 голосов
/ 24 августа 2010

Я конвертирую некоторый vbscript из приложения asp и наткнулся на строку в виде

If sCode > "" Then

где я ожидаю, что sCode будет содержать строку. Я знаю достаточно VBScript, чтобы пройти через него, но я не уверен в поведении некоторых странных утверждений. C # не примет это в качестве действительной проверки состояния. что такое эквивалентный оператор c #?

edit: дополнительное спасибо, если кто-то может предоставить некоторую документацию / ссылку для поведения vbscript.

Ответы [ 5 ]

2 голосов
/ 24 августа 2010

Поскольку в C # строка также может быть NULL, я бы использовал следующее:

if(!string.IsNullOrEmpty(sCode))
    //do something
1 голос
/ 24 августа 2010

Я не эксперт по vbscript, но я догадываюсь, что vbscript перегружен > со строками для их обычного сравнения. Так что, если это так, то в C # sCode.CompareTo(string.Empty) даст вам то, что вам нужно, -1, если sCode меньше, чем пустая строка (что невозможно в этом случае), 0, если они равны, и 1, если приходит sCode после.

В этом конкретном случае вы можете просто проверить, является ли sCode пустой строкой.

0 голосов
/ 27 августа 2010

Используйте оператор «<>» (не равно), например:

dim string
string = "hello"
if (string <> "") then
    WScript.Echo "We're Ok" & VbCrLf
else
    WScript.Echo "Empty String" & VbCrLf
End if
0 голосов
/ 24 августа 2010

В вашем конкретном случае вы просто сравниваете с 'string.Empty', но более общий ответ заключается в том, что это (обычно) регистрозависимое буквенно-цифровое сравнение. Например, "ababa" <"z1asdf" это правда. Чтобы представить это в C #, вы можете сделать: </p>

'string.Compare (A, B)

(обычно), поскольку его можно указать

0 голосов
/ 24 августа 2010

Я бы просто сделал! =, Что, как представляется, является целью кода:

if(sCode != String.Empty)
  Do();
...