首页 > 解决方案 > 在希伯来语中搜索希伯来语的音标

问题描述

我正在尝试通过 JavaScript 在 unicode 中搜索希伯来语 cantillation mark etnachta, u-0591 。我输入了以下代码,即使它在那里,我的搜索结果也是错误的。有什么我可以做不同的事情来让它发挥作用吗?

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

您可以在这里看到符号的位置(创世记 13:8)。

我什至使用了 JavaScript 转义,它想出了:

'\u05D5\u05B7\u05D9\u05BC\u05B9\u05A8\u05D0\u05DE\u05B6\u05E8\u05D0\u05B7\u05D1\u05B0\u05E8\u05B8\u059C\u05DD \u05D0\u05B6\u0\u5D0\u05B6\u05D0\u05B6\u05D0 u05D5\u05B9\u05D8\u05D0\u05B7\u05DC\u05BE\u05E0\u05B8\u05A8\u05D0\u05EA\u05B0\u05D4\u05B4\u05A4\u05D9\u05DE\u05B0\u05E8\u905B4\u05E8\u054B4\u058D u0599\u05D1\u05BC\u05B5\u05D9\u05E0\u05B4\u05A3\u05D9\u05D5\u05BC\u05D1\u05B5\u05D9\u05E0\u05B6\u0594\u05D9\u05\DA\u05B8\u505A\u05B8\u0505D5\050D u05D9\u05DF\u05E8\u05B9\u05E2\u05B7\u0596\u05D9\u05D5\u05BC\u05D1\u05B5\u05A3\u05D9\u05DF \u05E8\u05B9\u05E2\u05B6\u0591\u05\u05D9\u05\uDB u05B4\u05BD\u05D9\u05BE\u05D0\u05B2\u05E0\u05B8\u05E9\u05C1\u05B4\u05A5\u05D9\u05DD \u05D0\u05B7\u05D7\u05B4\u0596\u05D9\u0508DD\u05D9\u0502D u05BD\u05D7\u05B0\u05E0\u05D5\u05BC\u05C3'

标签: javascriptunicodehebrew

解决方案


您的问题与希伯来语或 unicode 字符无关,而是与您搜索的方式有关。

可能是您试图在字符串数组中查找正则表达式匹配项。如果是这种情况,则搜索不正确。搜索数组中的正则表达式,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')) ...

推荐阅读