У меня есть вопрос, связанный с сопоставлением строк и сравнением символов.
Символы >
и 0
(ноль) имеют следующие десятичные значения 62
и 48
соответственно.
Когда я сравниваю два символа в следующем коде, я получаю значение True
(что правильно)
Console.WriteLine('>' > '0');
Когда я сравниваю две односимвольные строки в следующем коде, я получаю значение -1
, которое указывает, что " > " меньше "0" (культура по умолчанию - английский)
Console.WriteLine(string.Compare(">", "0"));
В то время как сравнение значений кода "3" и "1" (51
и 49
) в следующем коде возвращает 1
(как ожидалось)
Console.WriteLine(string.Compare("3", "1"));
Кроме того, в документации string.Compare(string str1, string str2)
говорится:
Сравнение использует текущую культуру для получения специфических для культуры информации, такой как правила обсадной колонны и алфавитный порядок отдельные символы
Вы могли бы объяснить (или предоставить ссылку на какую-либо документацию), как реализуется сравнение строк, например. как вычисляется алфавитный порядок отдельных символов и т.д.