使用Javascript替换文本字符串中的某些阿拉伯语单词

纳赛尔

我有一个阿拉伯语文本字符串,我想将一些单词加粗并在单词之前添加图标

我用于英文文本的方法是

var wordsToBold = ["Properties", "How To Use"];

    function makeBold(input, wordsToBold) {
        return input.replace(new RegExp('(\\b)(' + wordsToBold.join('|') + ')(\\b)', 'ig'),
            '<br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i>$1<b>$2</b>$3');
    }

当我将这种方法与阿拉伯语单词一起使用时,它不起作用

var wordsToBold = ["الخصائص", "طريقة الاستعمال"];

测试文字:

弗朗索瓦·阿拉伯(Francois Arab):洛雷姆·伊普苏姆(Lorem Ipsum),美元,塞米特(Set Amit),接力手阿代巴(Adaiba)滑雪精英,塞舌尔(Set de Ayusmode Tempore)

Enkaidiuntiut Laboree在Magna Aliqua美元。使用说明:湿动漫添加最低成名,奇瓦斯·诺斯特里德

Elixir Station Yelamco劳工

威克多·斯特里比尤(WiktorStribiżew)

您可以建立自己的Unicode字边界:

  1. 左(前导)单词边界模式可以定义为以下位置:该位置不紧跟字母+任何可能的变音符号或数字或下划线: (?<!\p{L}\p{M}*|[\p{N}_])
  2. 可以将右手(后缀)词的边界模式定义为不紧跟字母,数字或下划线的位置:(?![\p{L}\p{N}_])

因此,您可以使用

var wordsToBold = ["Properties", "How To Use"];

function makeBold(input, wordsToBold) {
    return input.replace(new RegExp('(?<!\\p{L}\\p{M}*|[\\p{N}_])(?:' + wordsToBold.join('|') + ')(?![\\p{L}\\p{N}_])', 'igu'),
        '<br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>$&</b>');
}
console.log(makeBold("How To Use These Properties: 00How To Use These Properties00", wordsToBold));
// => <br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>How To Use</b> These <br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>Properties</b>: 00How To Use These Properties00
var wordsToBold = ["الخصائص", "طريقة الاستعمال"];
var arString = `فرانكوا اراب الخصائص: لوريم ايبسوم دولار سيت أميت ,كونسيكتيتور أدايبا يسكينج أليايت,سيت دو أيوسمود تيمبور

أنكايديديونتيوت لابوري ات دولار ماجنا أليكيوا . طريقة الاستعمال: وت انيم أد مينيم فينايم,كيواس نوستريد

أكسير سيتاشن يللأمكو لابورأس`;
console.log(makeBold(arString, wordsToBold));
// => فرانكوا اراب <br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>الخصائص</b>: لوريم ايبسوم دولار سيت أميت ,كونسيكتيتور أدايبا يسكينج أليايت,سيت دو أيوسمود تيمبور أنكايديديونتيوت لابوري ات دولار ماجنا أليكيوا . <br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>طريقة الاستعمال</b>: وت انيم أد مينيم فينايم,كيواس نوستريد أكسير سيتاشن يللأمكو لابورأس

如果要使用更通用的Unicode感知\b,请记住Unicode感知的\w实际匹配[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]),并记住\b可以将编写为(?:(?<=^)(?=\w)|(?<=\w)(?=$)|(?<=\W)(?=\w)|(?<=\w)(?=\W)),可以使用以下代码:

const w = String.raw`[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]`;
const nw = String.raw`[^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]`;
const uwb = String.raw`(?:(?<=^)(?=${w})|(?<=${w})(?=$)|(?<=${nw})(?=${w})|(?<=${w})(?=${nw}))`;
console.log(uwb);

makeBold功能看起来像

const w = String.raw`[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]`;
const nw = String.raw`[^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]`;
const uwb = String.raw`(?:(?<=^)(?=${w})|(?<=${w})(?=$)|(?<=${nw})(?=${w})|(?<=${w})(?=${nw}))`;

function makeBold(input, wordsToBold) {
    return input.replace(new RegExp(`${uwb}(?:${wordsToBold.join('|')})${uwb}`, 'gu'),
        '<br><br><i class="fas fa-ellipsis-h fa-xs mr-2"></i><b>$&</b>');
}

// Test
var wordsToBold = ["الخصائص", "طريقة الاستعمال"];
var arString = `فرانكوا اراب الخصائص: لوريم ايبسوم دولار سيت أميت ,كونسيكتيتور أدايبا يسكينج أليايت,سيت دو أيوسمود تيمبور     أنكايديديونتيوت لابوري ات دولار ماجنا أليكيوا . طريقة الاستعمال: وت انيم أد مينيم فينايم,كيواس نوستريد     أكسير سيتاشن يللأمكو لابورأس`;
console.log(makeBold(arString, wordsToBold));

请记住该u标志,它使得在ECMAScript 2018+兼容RegExp模式中可以使用Unicode类别类

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串从右到左的语言替换(阿拉伯语)

来自分类Dev

字符串从右到左的语言替换(阿拉伯语)

来自分类Dev

如何从文本文件中删除俄语和阿拉伯语字符串

来自分类Dev

php从字符串中删除阿拉伯语/波斯语字符串

来自分类Dev

当阿拉伯语和英语单词在同一字符串中时,单词会随机播放

来自分类Dev

删除 R 中的非阿拉伯语单词

来自分类Dev

使用PowerShell过滤阿拉伯语单词

来自分类Dev

在PHP中搜索并替换阿拉伯语

来自分类Dev

如何删除或过滤列表中的非英语(中文,韩语,日语,阿拉伯语)字符串?

来自分类Dev

检测阿拉伯语标记中的重复字符

来自分类Dev

从pdf中提取阿拉伯语到字符串c#

来自分类Dev

在数据库中保存字符串的阿拉伯语列表

来自分类Dev

使用阿拉伯语月份的JavaScript中的日期转换和操作

来自分类Dev

javascript正则表达式以匹配包含阿拉伯语特殊字符符号'ـ'的字符串u0640

来自分类Dev

在javascript中打印阿拉伯字符串

来自分类Dev

阿拉伯语单词如何与“ tashkel”匹配?

来自分类Dev

阿拉伯语单词如何与“ tashkel”匹配?

来自分类Dev

用阿拉伯语突出显示单词

来自分类Dev

itext显示阿拉伯语单词的空行

来自分类Dev

Stimulsoft报告richText错误中的Unicode字符(阿拉伯语或波斯语)

来自分类Dev

UITextview显示文本阿拉伯语但数字英语

来自分类Dev

Cakephp:如何将阿拉伯语单词保存到mysql表中?

来自分类Dev

如何在Java服务器页面中显示阿拉伯语单词?

来自分类Dev

php mysql在数据库中插入阿拉伯语单词

来自分类Dev

发票中的阿拉伯语单词pdf打印Magento

来自分类Dev

python 2.7中阿拉伯语单词的正则表达式

来自分类Dev

kableExtra:: 阿拉伯语单词在 add_header_above 中无法正确呈现

来自分类Dev

使用PHP和MySQL按字母顺序检索阿拉伯语单词

来自分类Dev

使用http请求GET android发送阿拉伯语单词

Related 相关文章

  1. 1

    字符串从右到左的语言替换(阿拉伯语)

  2. 2

    字符串从右到左的语言替换(阿拉伯语)

  3. 3

    如何从文本文件中删除俄语和阿拉伯语字符串

  4. 4

    php从字符串中删除阿拉伯语/波斯语字符串

  5. 5

    当阿拉伯语和英语单词在同一字符串中时,单词会随机播放

  6. 6

    删除 R 中的非阿拉伯语单词

  7. 7

    使用PowerShell过滤阿拉伯语单词

  8. 8

    在PHP中搜索并替换阿拉伯语

  9. 9

    如何删除或过滤列表中的非英语(中文,韩语,日语,阿拉伯语)字符串?

  10. 10

    检测阿拉伯语标记中的重复字符

  11. 11

    从pdf中提取阿拉伯语到字符串c#

  12. 12

    在数据库中保存字符串的阿拉伯语列表

  13. 13

    使用阿拉伯语月份的JavaScript中的日期转换和操作

  14. 14

    javascript正则表达式以匹配包含阿拉伯语特殊字符符号'ـ'的字符串u0640

  15. 15

    在javascript中打印阿拉伯字符串

  16. 16

    阿拉伯语单词如何与“ tashkel”匹配?

  17. 17

    阿拉伯语单词如何与“ tashkel”匹配?

  18. 18

    用阿拉伯语突出显示单词

  19. 19

    itext显示阿拉伯语单词的空行

  20. 20

    Stimulsoft报告richText错误中的Unicode字符(阿拉伯语或波斯语)

  21. 21

    UITextview显示文本阿拉伯语但数字英语

  22. 22

    Cakephp:如何将阿拉伯语单词保存到mysql表中?

  23. 23

    如何在Java服务器页面中显示阿拉伯语单词?

  24. 24

    php mysql在数据库中插入阿拉伯语单词

  25. 25

    发票中的阿拉伯语单词pdf打印Magento

  26. 26

    python 2.7中阿拉伯语单词的正则表达式

  27. 27

    kableExtra:: 阿拉伯语单词在 add_header_above 中无法正确呈现

  28. 28

    使用PHP和MySQL按字母顺序检索阿拉伯语单词

  29. 29

    使用http请求GET android发送阿拉伯语单词

热门标签

归档