我知道这个问题已经在这里回答了很多次,但我仍然没有得到确切的答案..我需要通过一些javascript将英文字母转换为波斯语/阿拉伯语字母,但不是整个页面,而是一个div或者更多。就像只针对特定类别一样。
我遇到过这些代码,但不知道哪一个最好用。
function convert($string) {
$persian = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
$num = range(0, 9);
return str_replace($persian, $num, $string);
}
我需要精确的源代码来仅在一个 div 类上实现。
例如:
<div class="demo">12345</div>
应该改为
<div class="demo">۱۲۳۴۵</div>
我不相信您提供的任何一个代码示例都是 JavaScript,第一个在语法上很接近,但缺少range()
方法和new
on the array()
定义。第二个是Java。
为了实现您的要求,您可以将要翻译的每个 HTML 元素的文本转换为数组并逐步遍历它们,通过正则表达式检查每个字符以查看是否找到数字。如果是,您可以在将阵列重新连接在一起之前进行简单的替换。像这样的东西:
var arabicNumbers = ['۰', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
$('.translate').text(function(i, v) {
var chars = v.split('');
for (var i = 0; i < chars.length; i++) {
if (/\d/.test(chars[i])) {
chars[i] = arabicNumbers[chars[i]];
}
}
return chars.join('');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="translate">Dummy text with some 123 numbers in 390981 it.</div>
<div class="translate">Dummy text with some 67898 numbers in 109209734.09 it.</div>
更新 - 2020 年 3 月
这是使用 ES6 语法的上述逻辑的简短版本。请注意,这适用于所有现代浏览器。它唯一不起作用的地方是在任何版本的 IE 中。
var arabicNumbers = ['۰', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
$('.translate').text((i, v) => v.split('').map(c => parseInt(c) ? arabicNumbers[parseInt(c)] : c).join(''));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="translate">Dummy text with some 123 numbers in 390981 it.</div>
<div class="translate">Dummy text with some 67898 numbers in 109209734.09 it.</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)