Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-如何转换unicode字符?英语数字到波斯语数字_Javascript_String_Unicode_Character Encoding - Fatal编程技术网

JavaScript-如何转换unicode字符?英语数字到波斯语数字

JavaScript-如何转换unicode字符?英语数字到波斯语数字,javascript,string,unicode,character-encoding,Javascript,String,Unicode,Character Encoding,我正在构建一个软件,从用户那里获取整数,进行一些计算,然后输出结果。问题是,我想使用英语数字获取用户编号(0、1、2等),并在输出中使用波斯语数字(如阿拉伯语)表示这些数字。我读过一些关于Unicode转换的主题,比如replace()和charCodeAt(),但我不理解这些代码 这是一段代码。(它将波斯语数字转换成英语数字,但我想做的恰恰相反。) 从波斯语到英语的文字看起来不必要的复杂,这让我怀疑我是否遗漏了什么 基本上,对于这样一个有限的数据集,最简单的事情就是给自己一张地图: //这里

我正在构建一个软件,从用户那里获取整数,进行一些计算,然后输出结果。问题是,我想使用英语数字获取用户编号
(0、1、2等)
,并在输出中使用波斯语数字(如阿拉伯语)表示这些数字。我读过一些关于Unicode转换的主题,比如
replace()
charCodeAt()
,但我不理解这些代码

这是一段代码。(它将波斯语数字转换成英语数字,但我想做的恰恰相反。)


从波斯语到英语的文字看起来不必要的复杂,这让我怀疑我是否遗漏了什么

基本上,对于这样一个有限的数据集,最简单的事情就是给自己一张地图:

//这里的“波斯人”不仅仅是波斯人,英语也不仅仅是英语。
//这两个数字集都用在多种语言中。。。
//一次性设置
var persian=“٠٢٤٥٦٧٨٩”;
var mappote=Object.create(null);
var mapEtoP=Object.create(null);
波斯语.split(“”).forEach(函数(字形,索引){
mapPtoE[字形]=索引;
mapEtoP[索引]=字形;
});
//转换一个字符“person”=>“English”
函数字符集(ch){
返回mappote[ch]| | ch;
}
//转换一个字符“英语”=>“波斯”
函数charEtoP(ch){
返回mapEtoP[ch]| | ch;
}
//将字符串中的“波斯语”数字转换为“英语”
功能strpoe(s){
返回s.替换(/[1633]、[1633]、[1637]、[1638]、[1640]、[g]、[g]、[g];
}
//将字符串中的“英语”数字转换为“波斯语”
功能拉伸器(s){
返回s.replace(/\d/g,charEtoP);
}
//演示如何将“波斯语”转换为“英语”
console.log(“测试A£££٣٣”、“=>”、strpoe(“测试A٣٣٣”);
console.log(“测试B٦٥٤”,“=>”,strpoe(“测试B٦٥٤”);
console.log(“测试C£٨٩”,“=>”,strpoe(“测试C٧٨٩”);
//演示如何将“英语”转换为“波斯语”
log(“Test A 0123”,“=>”,stretcop(“Test A 0123”);
log(“testb654”,“=>”,streetop(“testb654”);

log(“测试C789”,“=>”,streetop(“测试C789”)看起来您发布的代码同时处理阿拉伯语和波斯语数字。要转换回,您可以使用

var yas ="1234567890";

// To Arabic digits
yas = yas.replace(/[0-9]/g, function (d) {
    return d.charCodeAt(0) + 1632;    // 1632 == '٠' - '0'           
});

取决于要使用的设置


数字1632和1776是普通数字的代码点与阿拉伯和波斯数字的代码点之间的差异。

请原谅我的无知,但是4和6真的有两个单独的符号吗?٤和۴,以及٦和۶?如果是这样,从英语到波斯语,你想用哪一种?@T.J.Crowder我查了一下。第一组是阿拉伯数字,第二组是波斯数字。比我的更优雅。知道上下文是波斯语,但提供的示例是阿拉伯语是很有趣的。本例中OP提供的数字为阿拉伯语。第二种选择是传统的波斯语。5在不同的书写系统中也有所不同,可以写成字母(几乎像一颗倒置的心,而不是更圆的阿拉伯语字母)。我想你弄错了!弦乐就是一个例子。更准确地说,我想从用户那里获取数字(波斯语字符串),将它们转换成整数(显然是英语整数),进行一些计算,然后将它们返回给用户(波斯语字符串)。因为我计划用波斯语部署我的应用程序,所以我不想让用户看到英文字符串。(上面的代码不是我的。)@t-j-crowderu通常在波斯语中使用۴和۶@t-j-crowderAs如果我更改字符串,我可以看到您的代码中断,因为它只是简单地将字符相互映射@t-j-crowder@AmirhoseinAl:你不会改变地图的。但是你可以传递任何你想要的字符串。我进行了编辑以使其更清晰(并将处理整个字符串的位放入函数中)。
Number(persianDigits)
将导致
NaN
,这就是为什么我在回答中坚持使用字符串的原因。(不过,除此之外,像OP的代码那样使用偏移量似乎完全合理。)@T.J.Crowder[facepalm]当然,转换成数字是行不通的。谢谢你指出这一点。
var yas ="1234567890";

// To Arabic digits
yas = yas.replace(/[0-9]/g, function (d) {
    return d.charCodeAt(0) + 1632;    // 1632 == '٠' - '0'           
});
// To Persian digits
yas = yas.replace(/[0-9]/g, function (d) {
    return d.charCodeAt(0) + 1776;  // 1776 == '۰' - '0' 
});