OCR识别到的特殊符号是有中文和英文的区别吗?

替换规则:

console.log(“处理数据前mrz值 : " + mrz)

//转大写

mrz = mrz.toUpperCase()

mrz = mrz.replace(“く”.toUpperCase(),”<")

mrz = mrz.replace(“く”.toLowerCase(),"<")

mrz = mrz.replace(“へ”.toUpperCase(),"<")

mrz = mrz.replace(“へ”.toLowerCase(),"<")

console.log("处理数据后mrz值 : " + mrz)

实际结果

01-25 11:12:03.844 17351-17351 A03D00/JSAPP com.example.shenyun I 处理数据前mrz值 : EK24186942CHN9209127M3304053MNPFNBPD<くくくA942

01-25 11:12:03.844 17351-17351 A03D00/JSAPP com.example.shenyun I 处理数据后mrz值 : EK24186942CHN9209127M3304053MNPFNBPD<<<くA942

可以看到有一个く并没有被替换,OCR识别到的特殊符号是有中文和英文的区别吗?

HarmonyOS
2024-05-08 22:39:04
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
椰椰蓉螈

replace函数如果入参是字符串,则只会默认匹配第一个。如果要对所有的字符进行匹配替换,可以使用正则表达式:

function replaceMrz(): void { 
  let mrz = 'EK24186942CHN9209127M3304053MNPFNBPD<くくくA942'; 
  log.info('处理数据前mrz值 : ' + mrz); 
  //转大写 
  mrz = mrz.toUpperCase() 
 
  // mrz = mrz.replace("く".toUpperCase(),"<") // 这里只能匹配一个く字符 
  // mrz = mrz.replace("く".toLowerCase(),"<") // 这里再匹配一个く字符,执行到这里总共替换了两个く,所以原字符串中最后一个く没有被替换掉。 
  // mrz = mrz.replace("へ".toUpperCase(),"<") // 这里只能匹配一个へ字符 
  // mrz = mrz.replace("へ".toLowerCase(),"<") // 这里只能匹配一个へ字符 
  let regex = new RegExp('く'.toUpperCase() + '|' + "へ".toUpperCase(), 'g'); // 这里使用正则匹配即可 
  mrz = mrz.replace(regex, "<") 
  log.info('处理数据后mrz值 : ' + mrz); 
}
分享
微博
QQ
微信
回复
2024-05-09 12:02:55
相关问题
通用文字识别OCR)应用
882浏览 • 1回复 待解决
HarmonyOS 是否具备身份证OCR识别能力
445浏览 • 1回复 待解决
有没有实时相机预览结合OCR识别的demo
1726浏览 • 1回复 待解决
什么MongoDB?
3500浏览 • 1回复 待解决
UIAbilityExtensionAbility什么区别
813浏览 • 1回复 待解决
LocalStorageAppStorage什么区别
907浏览 • 2回复 待解决