Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Причина неподдержки кириллицы в js-коде (https://javascript.ru/forum/misc/82994-prichina-nepodderzhki-kirillicy-v-js-kode.html)

hdma 24.08.2021 22:10

Кстати, должны ли файлы «app.js» и «3.js» быть в UTF-8, или они по умолчанию в ANSI могут быть?

Rise 24.08.2021 23:14

Цитата:

Сообщение от hdma
требуется указывать «Б» как ты показал?

F={А:0,Б:23288,C:45163,D:77117 ...

Цитата:

Сообщение от hdma
но тоже не пошло

/\W/g так:
/[^А-Яа-яЁёA-Za-z0-9_]/g или /[^А-ЯЁA-Z0-9_]/ig или /[^А-ЯЁ\w]/ig

new RegExp("(\\W)"+i+"[\\.):]","ig") так:
new RegExp("([^А-ЯЁA-Z0-9_])"+i+"[\\.):]","ig") или new RegExp("([^А-ЯЁ\\w])"+i+"[\\.):]","ig")

Цитата:

Сообщение от hdma
быть в UTF-8

Да.

hdma 25.08.2021 00:40

Rise, зафурычило, спасибище!

Мне бы хотелось ещё один момент попробовать решить с вашей помощью — в отношении сохранения ударений в словах, которые бы при наборе не мешали поиску. Наверняка вы знаете такой символ ударения, который когда ставишь перед буквой — она делается ударной:
Акце́нт

Вот тут пример поиска как бы сквозь это ударение — то есть, при наборе букв ударение не мешает поиску. Возможно ли то же самое осуществить в разбираемом здесь коде — например, удалив этот символ ударения именно для поиска, но чтобы он оставался видимым на экране?

Rise 25.08.2021 07:02

Цитата:

Сообщение от hdma
символ ударения, который когда ставишь перед буквой

После буквы.
Цитата:

Сообщение от hdma
поиска как бы сквозь это ударение

Можно прокси сделать и удалять символ при чтении массива:
var N = ['aáa','cćc'];
N = new Proxy(N,{get(o,p){return(o.hasOwnProperty(p)&&p!='length')?o[p].replace('\u0301',''):o[p]}});
console.log(N[0], N[1], N[2], N.length);


Еще, не забыть, так как в Юникоде буква Ё находится вне диапазона А-Я , то надо немного переделать №6 и №8, т.е. если №4 будет выглядеть так, то:
//4
W="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ0"
//6
e.prototype.partitionIndexFinish=function(e){var i=this.normalizeLetter(e);return"Я"==i?F[0]:"0"==i?N.length:(i=W[W.indexOf(i)+1],F[i])}
//8
e.prototype.normalizeLetter=function(e){var i=e[0].toUpperCase();return i>="А"&&i<="Я"||i=='Ё'?i:"0"}

hdma 25.08.2021 08:24

Круто, спасибо! Только не удаётся правильно вписать строку с прокси. Пробовал вот так сразу после массива, а также ниже вписывать, через запятые и через точку запятой —

"-ways","-yl"],N = new Proxy(N,{get(o,p){return(o.hasOwnProperty(p)&&p!=' length')?o[p].replace('\u0301',''):o[p]}});console.log(N[0], N[1], N[2], N.length),F={А:0,Б:23288,

Rise 25.08.2021 08:36

hdma,
А это ;console.log(...) зачем?

hdma 25.08.2021 12:36

Rise,
Точно, консоль лишняя) Попробовал, но акцент не отображается — похоже, что replace('\u0301','') везде его затирает.

hdma 25.08.2021 12:38

Вот так записал:

,"-ways","-yl"],N = new Proxy(N,{get(o,p){return(o.hasOwnProperty(p)&&p!=' length')?o[p].replace('\u0301',''):o[p]}}),F={А:0,Б:23288,C:45163,

Rise 25.08.2021 18:43

Цитата:

Сообщение от hdma
везде его затирает.

Да, так я неправильно сделал. Надо все места смотреть, где используется N, и решать в каждом конкретном случае надо делать sanitize или нет:
function sanitize(s){return s.replace('\u0301','')}

Просто так в этом моменте помочь не могу, так как это довольно трудозатратно.

hdma 25.08.2021 19:45

Rise, я позже насчет этого обращусь, спасибо большое. Возник такой вопрос: возможно ли в этом приложении включить работу тегов, чтобы в файлах с определениями ими можно было обрамлять элементы и они соответственно отображались? Хотя бы курсив?


Часовой пояс GMT +3, время: 19:43.