[info]ru_java


ru.java

все о языке программирования java


Previous Entry в избранное рассказать другу Next Entry
Blame Georgia!
d.m.
[info]d_m_ пишет в [info]ru_java


Цитата из java.lang.String:
    if (ignoreCase) {
        // If characters don't match but case may be ignored,
        // try converting both characters to uppercase.
        // If the results match, then the comparison scan should
        // continue.
        char u1 = Character.toUpperCase(c1);
        char u2 = Character.toUpperCase(c2);
        if (u1 == u2) {
            continue;
        }
        // Unfortunately, conversion to uppercase does not work properly
        // for the Georgian alphabet, which has strange rules about case
        // conversion.  So we need to make one last check before
        // exiting.
        if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
            continue;
        }
    }

UPDATE1: Сегодня пятница
UPDATE2: В этом фрагменте нет открытой проблемы, которую автор поста предлагает обсудить
UPDATE3: "Blame Georgia!" -- это аллюзия на "Blame Canada!" из South Park / Bigger, Longer & Uncut, ЕВПОЧЯ.

(комментировать)
прямо таки остро политический комментарий (:

А почему бы не для всех случаев в lowercase переводить?

Не знаю.... Видимо, у грузинов разные маленькие буквы могут соответствовать одной большой, и наоборот.

 * @author  Lee Boynton
 * @author  Arthur van Hoff

Обращаю Ваше внимание, что они перевели в lowercase не исходные буквы, а результат их uppercase. Наверное, там всё очень не просто.

Допустим, у них есть буквы x и x', которые не следует различать при ignoreCase.

Тогда, например, такие правила делают этот код осмысленным:

upper(x)=X
upper(x')=X'
lower(X)=x
lower(X')=x <--- особенность!

и тривильные:

upper(X)=X
upper(X')=X'
lower(x)=x
lower(x')=x'

потому что для ловеркейс есть свои исключения
например, в немецком языке ловеркейс не будет работать
там есть буква бета, которая в ловере будет двойным s

Двойная s - это две буквы s? А как Character.toLowerCase() может выдать сразу две буквы?

упс
я не заметил что тут символы
там для символов аппер будет не такой как для строки состоящей из одного того же символа

токо я похоже ошибся
там тоже аппер, как и у грузин

вот код

public class Lala {
public static void main(String[] args) {
char c = 0x00DF;
String s = String.valueOf(c);
System.out.println("s = " + s);
System.out.println("lower = " + s.toLowerCase());
System.out.println("upper = " + s.toUpperCase());
System.out.println("lower(upper) = " + s.toUpperCase().toLowerCase());
System.out.println("upper char = " + Character.toUpperCase(c));
}

вот аутпут

s = ß
lower = ß
upper = SS
lower(upper) = ss
upper char = ß

К чему писать об этом в комьюнити?
Бред какой-то.

Нет. О проблемах с аперкейсом в грузинском языке. Это скорее куда-то к лингвистам.

Цитата была из исходника java.lang.String
Лигвистам это вряд ли интересно. К тому же -- какая пробема? Никто на String не жалуется :)

Да я заметил, что с java.lang.String :)
Какой-то просто больше политический пост вышел. :)

На турецком вообще есть буквы Ii и такие же только точка у большой и у маленькой ее нету. Дак вот переход от большим к маленьким и обратно никаким разумным правилам не поддается, пришлось прибегать к переводчикам +)

Но сановцы всё почему-то свалили на грузин.

Этот фикс теперь кажется не актуален, там 99% говорят на английском, судя по слухам. Я не про стариков, а про прогрессивную молодеж.

Тем более!
Я полон гнева - из-за грузинов сравнение строк с игнором кейса работает вдвое дольше!! :)

для негрузинских языков только одно лишнее сравнение в случае если строки не совпадают.
разы зависят от области применения (%

"Только одно лишнее сравнение" из двух, расположенных в цикле. IMHO, это и есть в два раза.

второе сравнение срабатывает только один раз =) если ты не грузин

И едят русских младенцев на завтрак, судя по слухам

А что они едят на обед, даже не берусь вообразить!

Не думаю что обсуждение политики в профессиональном сообществе хоть сколько-нибудь оправдано.

предлагаю очень пятничные посты запретить)). не для всех пятница заканчивает рабочую неделю, да и вообще хуйню почитать я на баше могу))

на баш - это прямо и немного направо
;)

(комментировать)