Javascript将跨越字符串的每个希伯来语单词包装在跨度标签中,但不包括标点

时间:2018-06-26 23:19:59

标签: javascript html

标题说明了一切。我有一个字符串:

וחזקתוהייתלאיש1,הנהידוע2שהמאמרשאמראדמו"ר(מהורש"ב)נ"עביוםהשביעיעגקקקכווכ הואסיוםוחותםההמשךתפיליןדמאריעלמא5שהתחיללומרבי"בתמוז,יוםהברמצוה]היתההתחלתובפסוקזה - השייכותדפסוקזה(וחזקתוהייתלאיש)לברמצוהבפשטותהיא,ע"פהידוע6דזהשבןשלשעשרה(דוקא)מחוייבבמצוות הואכיאזדוקאנק'בשםאיש。 וצריךלהבין,דמכיוןשבןי"גשנהאהאיש(ע"פטבע),מהיההדגשהלומר(בחגיגתברמצוה)וחזקתוהייתלאיש。 וגםצריךלהבין,הריהמעלהדבןי"גשנההיאשאזנעשהברדעת7,דדעתהואבמוחין,ובפרטלפיהמבוארבהמאמרד"האיתאבמדרשתיליםתרנ"ג[שהואאחדהמאמריםשחזראותםכ"קמו"חאדמו"רבחגיגת הברשלו] 8שהמעלהדבןי"גגההיאשאזישלועצםהמוחין9,ומהוהדיוקבבןי"גגהבהתווראיששמורה10ע

如您所见,它在希伯来语中带有各种逗号和方括号等。我希望用户能够单击单个单词,并且发生一些事情等。 我可以使用string.split(“”)将每个单词包装在span标签中,然后循环遍历并将span标签添加到每个单词中,但是这样可以保留逗号和其他标点符号,这是不行的

我尝试使用正则表达式替换所有标点并将其余结果仅包装在span标签周围(因为regex不直接支持希伯来语),例如:Html.replace(/[^.,/# !$%\ ^&* ;: {} = -_`〜()[] \ –] / g,“ $&”);但是我对正则表达式不太满意,实际上最终导致每个字符(除了标点符号)都用span换行,但是我想要每个完整的单词。

我可能缺少正则表达式中的一些简单内容,但不确定是什么。 我不想使用任何外部库。

1 个答案:

答案 0 :(得分:1)

我假设可以使用标点符号删除数字。

您正确地在空白处分割。您可以从那里删除带有简单正则表达式的非希伯来字符。示例:

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.

在拆分之前未完成替换的原因是,正则表达式将替换空格。