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
819浏览
收藏 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); 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
分享
微博
QQ
微信
回复
2024-05-09 12:02:55


相关问题
HarmonyOS 如何获取语言中文还是英文
1208浏览 • 1回复 待解决
HarmonyOS OCR识别:银行卡身份证识别
1223浏览 • 2回复 待解决
通用文字识别OCR)应用
1864浏览 • 1回复 待解决
HarmonyOS ocr识别问题
736浏览 • 1回复 待解决
HarmonyOS 指纹人脸识别相关资料
1128浏览 • 0回复 待解决
HarmonyOS 是否具备身份证OCR识别能力
1186浏览 • 1回复 待解决
有没有实时相机预览结合OCR识别的demo
2584浏览 • 1回复 待解决
HarmonyOS Next专门识别证件SDK
765浏览 • 1回复 待解决