Я имею странную проблему с IndexOf
функции:IndexOf возвращает -1, когда он должен возвращать 0
"strcat".IndexOf("st")
возвращенного -1
"strcat".IndexOf("str")
вернулся
Может ли кто-нибудь объяснить, почему это произошло?
Я имею странную проблему с IndexOf
функции:IndexOf возвращает -1, когда он должен возвращать 0
"strcat".IndexOf("st")
возвращенного -1
"strcat".IndexOf("str")
вернулся
Может ли кто-нибудь объяснить, почему это произошло?
Это может быть связано с текущей культурой вашей системы. Основываясь на вашем имени, я предположил, что вьетнамцы.
System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("vi-VN")
Dim i1 As Int32 = "strcat".IndexOf("st")
Dim i2 As Int32 = "strcat".IndexOf("str")
Dim i3 As Int32 = "strcat".IndexOf("st", System.StringComparison.InvariantCulture)
Dim i4 As Int32 = "strcat".IndexOf("str", System.StringComparison.InvariantCulture)
выходы: i1 = -1, i2 = 0, i3 = 0, i4 = 0
Под редакцией по этому адресу вопрос, заданный в разделе комментариев.
Как это происходит? Я не вижу ничего, что изменило бы культуру?
Чтобы ответить на это, вы должны обратиться к документации по методу. см: String.IndexOf Method (String)
Соответствующая информация:
Этот метод выполняет слово (с учетом регистра и культуры чувствительных) поиска с использованием текущей культуры. Поиск начинается с первой позиции символа этого экземпляра и продолжается до последней позиции символа.
У данной культуры есть свои правила для того, что считается «общим знанием/pratice». Вы не должны предполагать, что то, что вы считаете нормальным, является нормальным в другой культуре. Это причина того, что методы, выполняющие сравнения, позволяют указать культуру для определения правил, используемых для сравнения.
Это относится не только к строкам, но и к датам.
Самая известная программирующая головоломка: Проходит ли ваша программа turkey test? Также известна как «проблема турецкого языка». Это термины, которые вы можете исследовать для получения дополнительной информации.
Невозможно воспроизвести это. –
Это (возможно) на самом деле не произошло ... еще раз посмотрим на ваши предположения. –
Я получаю '0' для обоих. – Enigmativity