znNumber = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
// 获取字符串内所有中文数字
listZNNumberFromStr(str) {
if (!str) {
return [];
}
const strArray = str.split('');
let tempStr = '';
const numbers = new Array();
const re = /^[零〇一二三四五六七八九十百千万]+$/;
strArray.forEach(e => {
if (re.test(e)) {
tempStr = tempStr + e;
} else if (tempStr) {
numbers.push(tempStr);
tempStr = '';
}
});
return numbers;
}
// 中文字符串替换为阿拉伯数字
convertAddressToNumber(address) {
if (MetaLoader.loadConfig('CHINESE_FORMAT_TO_NUMBER') !== true) {
return;
}
const numbers = this.listZNNumberFromStr(address);
console.log(numbers);
numbers.forEach(n => {
let nReplace = n;
if (n.indexOf('十') > 0 || n.indexOf('百') > 0 || n.indexOf('千') > 0 || n.indexOf('万') > 0) {
nReplace = this.chineseToNumber(nReplace);
} else {
for (let index = 0; index < 10; index++) {
const reg = new RegExp(this.znNumber[index], 'g');
nReplace = nReplace.replace(reg, index.toString());
}
nReplace = nReplace.replace(new RegExp('零', 'g'), '0');
}
address = address.replace(n, nReplace);
});
return address;
}
chineseToNumber(chnStr) {
const chnNumChar: Map<string, number> = new Map();
chnNumChar.set('零', 0);
chnNumChar.set('〇', 0);
chnNumChar.set('一', 1);
chnNumChar.set('二', 2);
chnNumChar.set('三', 3);
chnNumChar.set('四', 4);
chnNumChar.set('五', 5);
chnNumChar.set('六', 6);
chnNumChar.set('七', 7);
chnNumChar.set('八', 8);
chnNumChar.set('九', 9);
let section = 0;
let number = 0;
const str = chnStr.split('');
console.log(str);
for (let i = 0; i < str.length; i++) {
const num = chnNumChar.get(str[i]);
console.log(num);
if (num >= 0) {
number = num;
if (i === str.length - 1) {
section += number;
}
} else {
let unit = 1;
if (str[i] === '十') {
unit = 10;
} else if (str[i] === '百') {
unit = 100;
} else if (str[i] === '千') {
unit = 1000;
} else if (str[i] === '万') {
unit = 10000;
}
section += number * unit;
number = 0;
}
}
return section;
}
地址内中文数字转为阿拉伯数字
最新推荐文章于 2022-07-08 21:18:41 发布