我知道这个问题在这里已经被回答过很多次了,但是我仍然没有确切的答案。我需要通过一些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
上的array()
定义。第二个是Java。
为了实现所需的功能,您可以将要转换的每个HTML元素的文本转换为数组并逐步执行,然后通过Regex检查每个字符以查看是否找到了数字。如果是这样,则可以在将阵列重新连接在一起之前进行简单的替换。像这样:
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-03
这是使用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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句