Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизПравила сортировки строк Найти похожие ветки
← →
Ega23 © (2007-04-05 17:04) [0]Поделитесь полной инфой (или в литературу ткните).
Т.е. при сравнении строк что в каком порядке берётся?
Например, что больше, "1" или "01"?
короче, правила нужны...
З.Ы. сравнение не на равенство, а именно на больше-меньше.
← →
TUser © (2007-04-05 17:14) [1]В разных программах разные правила.
← →
euru © (2007-04-05 17:18) [2]
> Например, что больше, "1" или "01"?
"1" > "01"
Делается посимвольное сравнение до первых несовпавших символов. Большей считается та строка, у которой первый несовпавший символ больше соответствующего символа из второй строки.
Если меньшая по длине строка полностью совпадает с началом большей строки, то она меньше второй.
← →
Сергей М. © (2007-04-05 17:18) [3]
> на больше-меньше
Сравнению на "больше-меньше", очевидно, могут подлежать только коды сравниваемых символов. А коды эти зависят от конкретных таблиц кодировки.
Над этим "низким уровнем" сравнения может стоять еще один, чуть более высокий уровень - уровень таблиц, определяющих спецправила сортировки. В СУБД они широко известны как COLLATION SEQUENCE.
← →
euru © (2007-04-05 17:20) [4]
> euru © (05.04.07 17:18) [2]
Это сравнение на точное совпадение символов.
Ещё может быть вариант без учёта регистра символов.
← →
wal © (2007-04-05 17:25) [5]Обычно так:
Каждый символ имеет некоторое значение (по алфавиту или по таблице символов), что позволяет сравнивать символы.
Каждое место в строке имеет "вес", но, в отличии от чисел, где некоторое место в записи имеет вес=0, налево увеличивается, направо уменьшается, в строках максимальный вес имеет первый символ независимо от длины записи, направо, соответственно вес уменьшается, а слева ничего нет.
Далее как обычно, сравнивают символы с максимальными весам, если совпадают, то следующие, если одна строка является началом другой, то более длинную считают большей.
Следовательно "01"<"1", если "0"<"1".
Но может быть все и не так, а как приснится разработчику.
← →
Ega23 © (2007-04-05 17:26) [6]Всё верно говорите. Но есть подозрение, что тут ещё как-то длина строки учитывается... Вот я и хочу выяснить.
Хотя если для разных программ - разное сравнение, то тут - увы...
← →
TUser © (2007-04-05 17:29) [7]Я даже знаю пример программы, которая сортирует не так, как это делает Проводник - 9 в этой софтине идет сначала, а 10 - уже потом. Если стоит задача сымитировать сортировку в какой-либо программе, то надо выяснять способ, который использован именно там, и при именно данных настройках.
← →
Паша 1 (2007-04-05 17:34) [8]
> ещё как-то длина строки учитывается
не должна, по-идее. потому "01"<"1"
этого можно избежать, если в процессе сортировки выравнивать строки по правой стороне, добавив пробелами, к примеру. тогда "01">" 1"
← →
Desdechado © (2007-04-05 18:04) [9]В последнее время все чаще встречаю сортировку, в которой игнорируются определенные символы (например, знак подчеркивания). Недавно это появилось в винде (даже флаг какой-то можно выставить, запамятовал за ненадобностью). Видел также в Оракле, там тоже регулируется опциями.
← →
Anatoly Podgoretsky © (2007-04-05 20:47) [10]> Ega23 (05.04.2007 17:04:00) [0]
Правило простое - лексикографическое сравнение слева направо, перед сравнением строка может подвергать дополнительной обработки (как правило базы данных, например MS SQL), но само сравнение лексикографическое.
← →
Petr V.Abramov (2007-04-05 21:41) [11]> Правило простое - лексикографическое сравнение слева направо
или сам решай, у какой строки больше
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c