我正在使用Birt with Eclipse Indigo。
我在报告中使用了一个表格。该表将从数据集中获取值。我想将数字转换为波斯数字。我尝试使用java脚本,但它不起作用。
var number = dataSetRow["invoice-number"];
var farsiNumber=new Array();
farsiNumber[0]='\u06f0';
farsiNumber[1]='\u06f1';
farsiNumber[2]='\u06f2';
farsiNumber[3]='\u06f3';
farsiNumber[4]='\u06f4';
farsiNumber[5]='\u06f5';
farsiNumber[6]='\u06f6';
farsiNumber[7]='\u06f7';
farsiNumber[8]='\u06f8';
farsiNumber[9]='\u06f9';
var outputNumber = "";
for(var i=0;i<number.length;i++) {
var ch = number.charAt(i);
var index = farsiNumber[ch];
if(ch >= 0 && ch <= 9)
outputNumber = outputNumber+index;
else
outputNumber = outputNumber+ch;
}
this.data = outputNumber;
有没有其他方法可以做到这一点,或者我应该为Birt Functions插件创建一个插件来执行此操作。
答案 0 :(得分:8)
使用此JavaScript
功能将数字转换为波斯语:
function toPersianNumber(num){
var persianNumberArray = new Array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹')
var res = ''
while(num/10 > 0){
n = num%10
num = parseInt(num/10)
res = persianNumberArray[n] + res
}
return res
}
答案 1 :(得分:0)
我正在使用此功能以获得更好的性能:)
函数toPersianChar(str){ var map = [“ \ u0660”,“ \ u0661”,“ \ u0662”,“ \ u0663”,“ \ u0664”,“ \ u0665”,“ \ u0666”,“ \ u0667”,“ \ u0668”,“ \ u0669“] var replaceDigits = str.replace(/ \ d(?= [^ <>] *(<| $))/ g,function($ 0){return map [$ 0]});
return(replaceDigits);
};