Поиск ивритских знаков кантиляции на иврите - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь найти знак еврейской кантилляции etnachta , u-0591 в юникоде через JavaScript. Я вставил следующий код, и, несмотря на то, что он есть, мой поиск оказывается ложным. Могу ли я сделать что-нибудь по-другому, чтобы заставить это работать?

const verse = ['וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַל־נָ֨א תְהִ֤י מְרִיבָה֙ בֵּינִ֣י וּבֵינֶ֔יךָ וּבֵ֥ין רֹעַ֖י וּבֵ֣ין רֹעֶ֑יךָ כִּֽי־אֲנָשִׁ֥ים אַחִ֖ים אֲנָֽחְנוּ'];
if (verse.includes(/^\u0591/)) {
  console.log(true);
} else {
  console.log(false);
}

Вы можете увидеть, где находится символ здесь (Бытие 13: 8).

Я даже использовал JavaScript-экранирование , и он придумал:

'u05D5 \ u05B7 \ u05D9 \ u05B9 \ u05A9 \ u05D0 \ u05DE0 \ u05B6 \ u05E8 \ u05D0 \ u05B7 \ u05D1 \ u05B0 \ u05E8 \ u05B8 \ u05D \ u05D \ u05D005D005D5 \ u05D5 \ u05B9 \ u05D8 \ u05D0 \ u05B7 \ u05DCE \ u0BE \ u05E0 \ u05B8 \ u05D0 \ u05EA \ u05B0 \ u05D4 \ u05B4 \ u05A4 \ u05D0 u05D0 u05D0 u05D0 </> \ u05D4 \ u05D1 \ u05B1 \ u05D9 \ u05E0 \ u05B4 \ u05A3 \ u05D9 \ u05D5 \ u05BC \ u05D1 \ u05B9 \ u05D9 \ u05B6 \ u0594 \ u05D5 \ u05D5 \ u05D5 \ u05D5 \ u05D5 \ u5D5 / 05/05 \ u05A5 \ u05D9 \ u05DF \ u05B9 \ u05E2 \ u05B7 \ u0596 \ u05D9 \ u05D5 \ u05D5 \ u05D1 \ u05B5 \ u05A9 \ u05DF \ u05E8 \ u05B9 \ u05D0 / uB0 u05D0 u05D0 <> <> > \ u05BC u05D0 <0D> 0BD \ u05B8 \ u05BD \ u05D7 \ u05B0 \ u05E0 \ u05D5 \ u05BC \ u05C3'

1 Ответ

0 голосов
/ 13 мая 2018

ваша проблема не имеет ничего общего с ивритскими или юникодовыми символами, но с тем, как вы ищете.

Возможно, вы пытаетесь найти соответствие регулярному выражению в массиве строк.Если это так, то поиск не правильный.Для поиска по регулярному выражению внутри массива, Array.include не ваш друг.Вам нужно будет повторить что-то вроде Array.findIndex() или Array.filter()

const verse = ['וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ'];  
if (verse.findIndex( v => v.search(/^\u0591/) ) != -1) ...

Если вы хотите вместо этого сопоставить регулярное выражение с простой строкой, вам нужно будет удалить свой [] вокруг вашей строки и использовать String.search()

 const verse = 'וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ';  
 if (verse.search(/^\u0591/)) ...

И, наконец, если вы хотите просто найти \u0591 внутри строки, вы можете просто использовать String.includes()

const verse = 'וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ';  
if (verse.includes('\u0591')) ...
...