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
按赞同
/
按时间
ubaba

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
相关问题
什么MongoDB?
1738浏览 • 1回复 待解决
wampserverapache区别
987浏览 • 1回复 待解决
Navigatorrouter.push区别
2451浏览 • 1回复 待解决
请问AbilitySliceFraction什么区别
8180浏览 • 3回复 已解决
什么域名转移密码了解?
981浏览 • 1回复 待解决
liteos-a 鸿蒙2.0什么区别
7521浏览 • 1回复 已解决
鸿蒙1.0鸿蒙2.0什么区别
13274浏览 • 3回复 待解决
鸿蒙系统预装升级什么区别
9699浏览 • 2回复 待解决
DevEco构建HapAPP什么区别
11752浏览 • 1回复 待解决
Class Routernamespace router什么区别
205浏览 • 1回复 待解决