如何用字母分隔阿拉伯语?

时间:2017-07-26 23:54:30

标签: javascript jquery html

如果您尝试此链接https://jsfiddle.net/u4bxz74c/10/。稍后结果将是这样的

PART 1
<p id="posttextareadisplay">
    <p class="ENGLISH">This is a samplasde textssss</p>
    <p class="ENGLISH"><b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></p>
</p>

PART 2
<p id="posttextareadisplay">
    <p class="ENGLISH">This is a samplasde textssss <b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></p>
</p>

问题第1部分:如果您看到以下代码,则所有paragraphs<p>均为class="ENGLISH"

如果段落中的内容是阿拉伯语,如何将其变为paragraph<p> class="ENGLISH"class="ARAB"?但如果写作不是阿拉伯语,那么class="ENGLISH"

段落
PART 1
<p id="posttextareadisplay">
    <p class="ENGLISH">This is a samplasde textssss</p>
    <p class="ENGLISH"><b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></p>
</p>

*****     I WANT TO BE LIKE THIS     *******
<p id="posttextareadisplay">
    <p class="ENGLISH">This is a samplasde textssss</p>
    <p class="ARAB"><b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></p>
</p>

问题第2部分:但是如果阿拉伯语加入普通文字或普通字体。因此段落或<p>仍为class="ENGLISH"

喜欢这个

<p class="ENGLISH"> This is a sa <b>  لْيُسْرَى ثُم تَشَهدْ</b></p>
<p class="ENGLISH"><b>  لْيُسْرَى ثُم تَشَهدْ</b> This is a sa</p>
<p class="ENGLISH"> This is a sa <b> ا لْيُسْرَى ثُم تَشَهدْ</b> This is a sa</p>
<p class="ENGLISH"><b>  لْيُسْرَى ثُم تَشَهدْ</b> This is a sa <b>  لْيُسْرَى ثُم تَشَهدْ</b></p>

注意:我已尝试过此代码,但似乎这段代码封装了textarea的全部内容

if (pattern.test(newText)) {
    str = newText.replace($format_search[i], $arab_format_replace[i]);
} else {
    str = newText.replace($format_search[i], $format_replace[i]);
}

1 个答案:

答案 0 :(得分:0)

您可以使用RegExp构造函数从字符串"abcdefghijklmnopqrstuvwxyz "创建RegExp()模式,并使用不区分大小写的标记i;使用循环迭代元素;如果元素的.textContent以转换为RegExp的字符串中的一个字符开头,或者元素.textContent的每个字符都是RegExp中的一个字符,则设置元素{{1 {}为} .className,否则将元素"ENGLISH"设置为.className

请注意"ARAB"id元素的document应该是唯一的。此外,<p>不是<p>元素的有效子元素。

替换class="posttextareadisplay"用于id="posttextareadisplay"父级<p>元素和<span>用于子级<p>元素。

const en = "abcdefghijklmnopqrstuvwxyz ";

for (let el of document.querySelectorAll(".ENGLISH")) {
  if (new RegExp(`^[${en.slice(0, en.length -1)}]`, "i").test(el.textContent) 
     || [...el.textContent].every(char => 
          new RegExp(`${char}`, "i").test(en))) {
    el.className = "ENGLISH"
  } else {
    el.className = "ARAB"
  }
}
PART 1
<p class="posttextareadisplay">
    <span class="ENGLISH">This is a samplasde textssss</span>
    <span class="ENGLISH"><b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></span>
</p>

PART 2
<p class="posttextareadisplay">
    <span class="ENGLISH">This is a samplasde textssss <b>فَإِذَا جَلَسْتَ فِي وَسَطِ الصلَاةِ فَاطْمَئِن، وَافْتَرِشْ فَخِذَكَ الْيُسْرَى ثُم تَشَهدْ</b></span>
</p>