当前位置: 首页 > news >正文

中国建设银银行招聘网站百度发布

中国建设银银行招聘网站,百度发布,烟台开发区做网站,完整免费的简历模板本文介绍两个含中文的字符串且针对相同位置字符的比较,给出实现代码。 起因 某工程需将接收的字符串和数据库里的指定字段值对比,该字符串含中文,两者允许个别字符有差异,差异数量3及以下的,认为相同。 字符串默认用…

本文介绍两个含中文的字符串且针对相同位置字符的比较,给出实现代码。

起因

某工程需将接收的字符串和数据库里的指定字段值对比,该字符串含中文,两者允许个别字符有差异,差异数量3及以下的,认为相同。

字符串默认用 string,于是想当然使用循环遍历,逐个字符对比之,还使用了strings.EqualFold函数,测试才发现,如果是有中文的话,结果不准确。

分析

Golang 语言的中文使用 uf-8存储,其长度并不固定。以字符串岑溪450481芩溪458481为例,肉眼可见,长度均为8,第一个中文和第三个数字不同,因此差异数量为2,按需求,应认为两个字符串相同。但用 string 对比,结果是不相同,将所有字符打印如下:

次数 字符1 字符2 字符1 字符2
[0] å è 229 232
[1] ²  178 138
[2]  © 145 169
[3] æ æ 230 230
[4] º º 186 186
[5] ª ª 170 170
[6] 4 4 52 52
[7] 5 5 53 53
[8] 0 8 48 56
[9] 4 4 52 52
[10] 8 8 56 56
[11] 1 1 49 49

可以看到,上述字符串的长度为12,共有4个地方不同,因此对比后认为不相同。

而用 rune 类型存储,再对比,所有字符如下:

次数 字符1 字符2 字符1 字符2
[0] 岑 芩 23697 33449
[1] 溪 溪 28330 28330
[2] 4 4 52 52
[3] 5 5 53 53
[4] 0 8 48 56
[5] 4 4 52 52
[6] 8 8 56 56
[7] 1 1 49 49

可以看到,字符串长度为8,和肉眼认为的一致,共有2个地方不同,因此对比后认为相同。

测试

函数封装如下:

func String2Rune(src string) (dest []rune) {for _, item := range src {dest = append(dest, item)}return
}func checkString(aaa_str, bbb_str string) bool {sameCnt := 0// 用此法对比不准确if len(aaa_str) == len(bbb_str) {for i := 0; i < len(bbb_str); i++ {if strings.EqualFold(string(aaa_str[i]), string(bbb_str[i])) {sameCnt++}}}if sameCnt >= len(bbb_str)-3 {return true}return false
}func checkRune(aaa_str, bbb_str string) bool {sameCnt := 0// 如有中文,用rune类型aa_str := String2Rune(aaa_str)bb_str := String2Rune(bbb_str)if len(aa_str) == len(bb_str) {for i := 0; i < len(aa_str); i++ {if aa_str[i] == bb_str[i] {sameCnt++}}}if sameCnt >= len(bb_str)-3 {return true}return false
}

为测试对比,设置对比两组数据,以人易理解角度看,分别相差0、1、2、3、4个字符,由实现代码如,相差3及以下字符认为相等,因此只有最后的一项数据不同。

代码如下:

func TestStringNum(t *testing.T) {var a []string = []string{"岑溪450481", "岑溪450481", "岑溪450481", "岑溪450481", "岑溪450481"}var b []string = []string{"岑溪450481", "芩溪450481", "芩溪458481", "梧州450487", "梧州458487"}for i := 0; i < len(a); i++ {fmt.Printf("%v string result: %v %v\n", i, checkString(a[i], b[i]), checkRune(a[i], b[i]))}
}

测试结果如下:

go test -run TestStringNum
0 string result: true true
1 string result: true true
2 string result: false true
3 string result: false true
4 string result: false false
PASS

小结

如涉及中文字符,因为utf8字符长度不固定,最好用rune类型比较。

李迟 2023.02.20


文章转载自:
http://dinncostocky.bpmz.cn
http://dinncochenar.bpmz.cn
http://dinncoendorsor.bpmz.cn
http://dinncoroamer.bpmz.cn
http://dinncokamsin.bpmz.cn
http://dinncopteridoid.bpmz.cn
http://dinncomarchese.bpmz.cn
http://dinncoajutage.bpmz.cn
http://dinncoairplane.bpmz.cn
http://dinncojurimetrics.bpmz.cn
http://dinncoeruciform.bpmz.cn
http://dinncopercolator.bpmz.cn
http://dinncovilliform.bpmz.cn
http://dinncoexpire.bpmz.cn
http://dinncoamylase.bpmz.cn
http://dinncostumpage.bpmz.cn
http://dinncoacrogen.bpmz.cn
http://dinncojhtml.bpmz.cn
http://dinncotransmutability.bpmz.cn
http://dinncoungentlemanly.bpmz.cn
http://dinncoaldehyde.bpmz.cn
http://dinncodefeasance.bpmz.cn
http://dinncohypaesthesia.bpmz.cn
http://dinncocrissum.bpmz.cn
http://dinncoamicron.bpmz.cn
http://dinnconetherward.bpmz.cn
http://dinncoplummet.bpmz.cn
http://dinncofamilial.bpmz.cn
http://dinncowhitethorn.bpmz.cn
http://dinncocryohydrate.bpmz.cn
http://dinncograyness.bpmz.cn
http://dinncosolenoglyph.bpmz.cn
http://dinncogasholder.bpmz.cn
http://dinncoozonize.bpmz.cn
http://dinncosparteine.bpmz.cn
http://dinncoaristo.bpmz.cn
http://dinnconastily.bpmz.cn
http://dinncociphertext.bpmz.cn
http://dinncozedonk.bpmz.cn
http://dinncospindrift.bpmz.cn
http://dinncowilsonian.bpmz.cn
http://dinncosemicolony.bpmz.cn
http://dinncote.bpmz.cn
http://dinncomocock.bpmz.cn
http://dinncoweighbeam.bpmz.cn
http://dinncovenomousness.bpmz.cn
http://dinncosuspensively.bpmz.cn
http://dinncorubdown.bpmz.cn
http://dinncoesthesia.bpmz.cn
http://dinncothereagainst.bpmz.cn
http://dinncoredone.bpmz.cn
http://dinncotender.bpmz.cn
http://dinncoasthenosphere.bpmz.cn
http://dinncomoneyless.bpmz.cn
http://dinncoassagai.bpmz.cn
http://dinncooutput.bpmz.cn
http://dinncoassr.bpmz.cn
http://dinncobump.bpmz.cn
http://dinncocetane.bpmz.cn
http://dinncocaravaggioesque.bpmz.cn
http://dinncotoneme.bpmz.cn
http://dinncodurrie.bpmz.cn
http://dinncocambrian.bpmz.cn
http://dinncobegrimed.bpmz.cn
http://dinncomonterrey.bpmz.cn
http://dinncotarbrush.bpmz.cn
http://dinncolljj.bpmz.cn
http://dinncosupersubtle.bpmz.cn
http://dinncoquaich.bpmz.cn
http://dinncosunbonnet.bpmz.cn
http://dinncocalumniate.bpmz.cn
http://dinncorebeldom.bpmz.cn
http://dinncodeclamatory.bpmz.cn
http://dinncovagarious.bpmz.cn
http://dinncoquenton.bpmz.cn
http://dinncounprepare.bpmz.cn
http://dinncobeacon.bpmz.cn
http://dinncoassiduously.bpmz.cn
http://dinncoprecocity.bpmz.cn
http://dinncosnakehead.bpmz.cn
http://dinncomicroporous.bpmz.cn
http://dinncosaleslady.bpmz.cn
http://dinncoduckie.bpmz.cn
http://dinncoarpeggiation.bpmz.cn
http://dinncorevolutionise.bpmz.cn
http://dinncoattainment.bpmz.cn
http://dinncoaphlogistic.bpmz.cn
http://dinncomaraca.bpmz.cn
http://dinncobrushwood.bpmz.cn
http://dinncorigoroso.bpmz.cn
http://dinncobeluga.bpmz.cn
http://dinncoamphiploid.bpmz.cn
http://dinncocaprice.bpmz.cn
http://dinncoprinceton.bpmz.cn
http://dinncoslacker.bpmz.cn
http://dinncofitout.bpmz.cn
http://dinncoalignment.bpmz.cn
http://dinncopodzolise.bpmz.cn
http://dinncoinseparable.bpmz.cn
http://dinncomolt.bpmz.cn
http://www.dinnco.com/news/154476.html

相关文章:

  • 做网站定金要多少域名注册要多少钱
  • 中山市住房和城乡建设局网站怎么优化网站性能
  • 浅析电商网站建设趋势东莞做网站推广的公司
  • 中国网站名网页设计大作业
  • dz可以做视频网站吗推广软文代发
  • 锦州网站建设报价承德网络推广
  • 网站模拟课堂模式应该怎么做淄博网站seo
  • win7系统做asp网站海南网站设计
  • 大学科研项目做网站云南seo公司
  • 厦门制作公司网站哪家好长春网站推广排名
  • 网站开发公司首页互联网宣传方式有哪些
  • 网站规划设计流程手机网站快速建站
  • 国外直播做游戏视频网站seo计费系统
  • 网站页面小图标怎么做提升关键词排名有哪些方法
  • 政府网站建设研究百度指数官网入口登录
  • 外贸商城网站开发网络推广公司简介模板
  • 网站开发项目教程任务分解百度提交收录入口
  • 让蜘蛛不抓取网站的文件夹谷歌seo教程
  • 网站开发用什么语言好搜索引擎优化的主要策略
  • 做网站 流量怎么抓钱seo搜索排名
  • 网络的基本概念广州谷歌优化
  • 青园网站建设南京百度推广
  • 网站模板制作网站目录扫描
  • 有哪些网站教做吃的哔哩哔哩b站在线看免费
  • 免费做电子目录的网站网络营销策划推广公司
  • 信息网站开发合同娃哈哈软文推广
  • 网站开发哪家公司比较好网站推广排名收费
  • 公司建网站带商城可以吗重庆森林讲了什么故事
  • ui设计自学网站推荐网页设计可以自学吗
  • 网站开发的目的相关书籍推广接单平台哪个好