Почему сравнение строковых регистров вдруг перестало работать в vb.net?
Кто-нибудь знает, как возможно следующее? Внезапное сравнение строк с использованием .ToLower
а также Lcase
перестал работать.
Если я сделаю это в ближайшем окне:
?lcase(text)
"menu"
?lcase(text)="menu"
False
Это только началось несколько минут назад. Я использую:
- .NET 4.5.2
- Visual Studio 2013 Ultimate
- Visual Basic
РЕДАКТИРОВАТЬ: Источник этой проблемы отсюда: пожалуйста, как я могу вернуть декодированные байты вместо текста из CryptoStream
После изменения этого кода.
2 ответа
Прежде всего, я бы перестал использовать LCase
потому что это код совместимости VB 6.
Во-вторых, я бы не использовал встроенные.NET "string".ToLower()
или же "string".ToUpper()
в сравнении строк, потому что это может привести к неожиданным результатам для некоторых местных жителей.
Лучше использовать text.Equals("menu", StringComparison.OrdinalIgnoreCase)
Я не знаю, в чем причина вашей проблемы, но надеюсь, что это поможет.
Посмотрите на String.Compare
'Declaration
Public Shared Function Compare ( _
strA As String, _
strB As String, _
ignoreCase As Boolean _
) As Integer
Результат Меньше нуля = strA меньше, чем strB.
Результат Zero = strA равен strB.
Результат Больше нуля = strA больше, чем strB.