Я искал ответы, и они хороши для стандартного алфавита. но у меня другая ситуация.как сортировать неанглийские строки?
так что я программирую в java. Я пишу определенную программу. эта программа имеет в некотором месте некоторый список строковых элементов. Я хотел бы отсортировать эти строковые элементы в соответствии с алфавитом.
Если бы я сортировал его по английскому алфавиту, было бы легко, так как обычно все кодовые страницы совместимы с американским стандартным кодом для обмена информацией (ascii), и у них есть все буквы английского алфавита, уже отсортированные, поэтому, если i хотел бы отсортировать мой список, мне нужно было бы сравнить значения символов, чтобы определить, какая буква идет туда.
но моя проблема в том, что я не хочу сортировать список, используя английский алфавит. Моя программа имеет возможность отображения на английском или некоторых других языках. проблема заключается в том, что некоторые из этих языков имеют различный алфавит из английского алфавита, поэтому буквы не совпадают с буквами английского алфавита и, следовательно, простые < и> валидация значений символов не работает, потому что буквы не отсортированы правильно в кодовая страница.
для целей данного вопроса позволяет говорить английский алфавит выглядит следующим образом:
a,
b,
c,
d,
e,
f,
g.
позволяет сказать, что есть определенная страна под названием «а», алфавит выглядит следующим образом:
d,
b,
g,
e,
a,
c,
f.
первые из все, если a равно 97 на кодовой странице, b 98, c 99 и так далее, как я могу сортировать свой список с использованием второго алфавита в этом примере, поскольку второй алфавит имеет первую букву, равную 100, вторую - 98, третью до 103 и так далее?
и мой второй вопрос: К сожалению, некоторые страны, в которых я переводил свою программу, имеют алфавит, где некоторые комбинации букв рассматриваются как одна буква. для моего второго примера, позволяет сказать, что страна «размораживание» имеет следующий алфавит:
d,
g,
be,
e,
fe,
c,
f.
здесь: d - первая буква в алфавите, г - вторая буква в алфавите, быть - третье письмо в алфавите (одна буква, хотя она написана как две буквы, считается одной буквой и имеет ее положение в алфавите), e - четвертая буква в алфавите, fe - пятая буква в алфавите (также написано как две буквы, но рассматривается как одна буква), c - шестая буква в алфавите, f - седьмая буква в алфавите.
как вы можете видеть в этом воображаемом примере номер 2 воображаемой страны «def», эта страна действительно испортила алфавит. и после представления этих двух примеров этих двух алфавитов двух воображаемых стран вы понимаете, почему я не могу использовать стандартный метод сортировки строк.
так, можете ли вы, пожалуйста, помочь мне с этой сортировкой. я не уверен, что я могу сделать, чтобы отсортировать по этому прикрученному алфавиту.
Постскриптум: строки ниже, это не так важны для вопроса, но они просто больше информации, если кто-то хочет знать, где я нашел такой облажался алфавит
хорошо, я дал те примеры, которые состоит из 7 случайно упорядоченных букв только для цели этого вопроса - сделать его более простым. в случае, если вы задаетесь вопросом, какова моя настоящая проблема - я пытаюсь перевести свою программу на хорватскую. хорватский алфавит действительно облажался, потому что он идет следующим образом:
1 |a
2 |b
3 |c
4 |č
5 |ć
6 |d
7 |đ
8 |đž
9 |e
10|f
11|g
12|h
13|i
14|j
15|k
16|l
17|lj
18|m
19|n
20|nj
21|o
22|p
23|r
24|s
25|š
26|t
27|u
28|v
29|z
30|ž
как вы можете видеть, Хорват алфавит несколько похож на английский алфавит, но большинство писем не в том же месте, что и английский, и несколько из них вообще не существует в английском алфавите, а несколько букв - это одна буква, которая написана как две буквы. так что действительно сложно сортировать. поэтому я надеюсь, что кто-то знает какой-то способ сделать это. , конечно, есть самый тупой метод сортировки, который всегда будет работать и может сортировать что угодно, и это метод с оператором switch, где я сравниваю два строковых элемента, а для каждой буквы я использую оператор switch, где оператор switch имеет значение 31+ default = 32 случая, из которых каждый из них имеет свой собственный коммутатор с 32 случаями. то, что в общей сложности 1024 случая, и если мой средний случай имеет 4 строки кода, я заканчиваю тем, что, если я хочу сортировать строки, используя не-английский алфавит, мой метод сортировки будет иметь длину не менее 4096 строк. и это огромный метод. Это самый тупой способ сортировки, но только тот, который я могу выяснить на данный момент. , поэтому я спрашиваю здесь, потому что я надеюсь, что кто-то знает какой-нибудь более простой способ сделать это. метод, который не такой большой, как 4k строк кода, просто для сортировки глупых строк. У меня есть метод для сортировки английских строк, и он занимает всего несколько десятков строк кода. Надеюсь, кто-то может предложить мне что-то менее 4k строк кода.
поэтому, если кто-нибудь знает более простое решение, я был бы признателен.
thanx.
Не указаны слова "đž", "lj" и "nj" на Хорватии? Они находятся в этой статье в Википедии: [https://en.wikipedia.org/wiki/Gaj%27s_Latin_alphabet](https://en.wikipedia.org/wiki/Gaj%27s_Latin_alphabet#Digraphs). Возможно, вам придется обрабатывать оба варианта, но я думаю, что вы найдете dž, lj и nj лучше работать с «Locale», чем с неграфовыми (неправильными?) Версиями. –
hay, да, это правильно. это то, что усложняет сортировку. так как, например, «l» - это одна буква «j» - другая, но когда она одна за другой, они считаются третьей буквой. Я упомянул об этом в своем вопросе. , но в любом случае ответ ниже работает хорошо, и он правильно сортирует письма, поэтому мне больше не нужно беспокоиться об этом. –
Хорошо. Я хочу сказать, что для орграфов есть отдельные символы.Попробуйте скопировать один из последнего предложения в мой предыдущий комментарий. –