仅为指定的div将英文数字转换为波斯语/阿拉伯语
我知道这个问题已在这里多次回复,但我还没有得到确切的答案..我需要通过一些javascript将英文字母转换为波斯语/阿拉伯字母,但不是整个页面,而是仅用于div或者更多。 只喜欢特定的课程。
我遇到过这些代码,但不知道哪一个最好用。
function convert($string) { $persian = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'); $num = range(0, 9); return str_replace($persian, $num, $string); }
我需要确切的源只在一个div类上实现。
例如:
12345
应该改为
۱۲۳۴۵
我不相信你提供的任何一个代码示例都是JavaScript,第一个是语法上很接近,但缺少range()
方法和array()
定义中的new
。 第二个是Java。
为了达到您的要求,您可以将要翻译的每个HTML元素的文本转换为数组并逐步执行它们,通过Regex检查每个字符以查看是否找到了数字。 如果是,您可以在将arrays重新连接起来之前进行简单的替换。 像这样的东西:
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(''); })
示例小提琴
你可以用
$('.translate').text(function(i, v) { return convertToPersianNumber(v) })
以及此链接中的以下代码
var persianDigits = "۰۱۲۳۴۵۶۷۸۹"; var persianMap = persianDigits.split(""); function convertToEnglishNumber(input){ return input.replace(/[\u06F0-\u06F90]/g, function(m){ return persianDigits.indexOf(m); }); } function convertToPersianNumber(input){ return input.replace(/\d/g,function(m){ return persianMap[parseInt(m)]; }); } // tests console.log(convertToEnglishNumber("۴۳۵")); console.log(convertToEnglishNumber("۶۲۷۰۱")); console.log(convertToEnglishNumber("۳۵۴۳")); console.log(convertToPersianNumber("216541")); console.log(convertToPersianNumber("16549")); console.log(convertToPersianNumber("84621"));
要在React中使用,请使用此组件
import React, {Component} from "react"; class PersianNumber extends Component { render() { let en_number = this.props.number.toString(); let persianDigits = "۰۱۲۳۴۵۶۷۸۹"; let persianMap = persianDigits.split(""); let persian_number = en_number.replace(/\d/g, function (m) { return persianMap[parseInt(m)]; }); return ( {persian_number} ) } } export default PersianNumber
将文件名保存为: PersianNumber.jsx
并使用如下:
尝试使用angularJS版本,它具有很多function,
GitHub – mohebifar / angular-persian:angular.js的波斯工具
{{vm.value | pNumber}}
注意:此解决方案非常易于使用,但基于angularJS。