【问题标题】:remove Niqqud from string in javascript从javascript中的字符串中删除Niqqud
【发布时间】:2016-06-09 04:44:54
【问题描述】:

我有这里描述的确切问题:

removing Hebrew "niqqud" using r

一直在努力删除 niqqud(用于表示元音或区分希伯来字母表字母的替代发音的变音符号)。例如,我有这个变量: sample1

我找不到有效的方法来删除字母下方的标志。

但在我的情况下,我必须在 javascript 中执行此操作。

根据here 描述的 UTF-8 值表,我尝试过这个regex,但没有成功。

【问题讨论】:

    标签: javascript regex unicode hebrew


    【解决方案1】:

    您的正则表达式只是一个小问题。请尝试以下操作:

    const input = "הֻסְמַק";
    console.log(input)
    console.log(input.replace(/[\u0591-\u05C7]/g, ''));
    
    /*
    $ node index.js
    הֻסְמַק
    הסמק
    */
    

    【讨论】:

    • 文本中的 Maqaf (u5BE) 存在问题。它被删除,两个词被连接起来。例如 כִּי־טֽוֹב 变成 כיטוב
    【解决方案2】:

    nj_ 的回答很棒。

    只是补充一点(因为我没有足够的声望点来直接评论)-

    [\u0591-\u05C7] 可能太宽泛了。在此处查看相关表格:https://en.wikipedia.org/wiki/Unicode_and_HTML_for_the_Hebrew_alphabet#Compact_table

    059x05AX 行用于 t'amim(重音符号/音标)。 Niqud 本身在行中 05Bx05Cx

    正如 Avraham 评论的那样,如果 2 个单词被一个 makaf (05BE) 连接,您可能会遇到问题,然后删除它,您最终会得到连续单词。

    如果您只想删除 t'amim 但保留 nikud,请使用 /[\u0591-\u05AF]/g。如果您想避免 Avraham 提出的问题,您有 2 个选择 - 保留 maqaf,或者用破折号替换它:

    //keep the original makafim
    const input = "כִּי־טוֹב"
    console.log(input)
    console.log(input.replace(/([\u05B0-\u05BD]|[\u05BF-\u05C7])/g,""));
    
    //replace makafim with dashes
    console.log(input.replace(/\u05BE/g,"-").replace(/[\u05B0-\u05C7]/g,""))
    
    /*
    $ node index.js
    כִּי־טֽוֹב
    כי־טוב
    כי-טוב
    */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2018-08-07
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多