Почему сравнение строковых регистров вдруг перестало работать в 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.

Другие вопросы по тегам