代码之家  ›  专栏  ›  技术社区  ›  B''H Bi'ezras -- Boruch Hashem

javascript将字符串中的每个希伯来语单词包装在span标记中,不包括标点符号

  •  2
  • B''H Bi'ezras -- Boruch Hashem  · 技术社区  · 6 年前

    标题说明一切。我有一根绳子:

    ××××××××××××××1、××××××××2×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××ד××××4××××”×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(×××××××××××××)、×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××ד××××”××××××××××××××”××××8××××××××××××××××××××××××××××××××××9,×××××××××××××××××××××××××××××10××××××××××

    如你所见,它是希伯来语,有各种逗号和括号等。我希望用户能够点击一个单独的单词和事情发生等。 我可以用string.split(“”)将每个单词包装成SPAN标记,然后循环遍历它并将SPAN标记添加到每个单词中,但是它保留逗号和其他标点符号,这是一个no-no。

    我尝试使用regex替换所有标点符号,并将剩下的结果仅包装在SPAN标记周围(因为regex不直接支持希伯来语),比如:html.replace(/[^.,/)!$%\^&*;:{}=-\u` ~([]\]/g,“$&”);但我不太擅长正则表达式,这实际上会导致 性格 (除了标点符号)在跨距中,但是我想要每个完整的单词。

    我可能遗漏了regex中的一些简单内容,但不确定是什么。 我不想使用任何外部库。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Burgan    6 年前

    我假设去掉带有标点符号的数字也是可以的。

    在空白处分割是正确的。从那里你可以用一个简单的正则表达式删除非希伯来语字符。例子:

    var str = `שנה היא שאז נעשה בר דעת7, דדעת הוא במוחין, ובפרט לפי המבואר בהמאמר ד`;
    
    var words = str.split(" ");
    
    for (var i = 0; i < words.length; i++) {
      words[i] = words[i].replace(/[\x1E-\x7F]/g, '')
    }
    
    // words is now an array of words only containing Hebrew characters.
    

    正则表达式包含30-127范围内的字符。您可以通过更改 \x1E 和/或 \x7F 其他十六进制数。 Here is a reference.

    在拆分之前不进行替换的原因是正则表达式将替换空格。