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

中国建设银银行招聘网站怎么样引流顾客到店方法

中国建设银银行招聘网站,怎么样引流顾客到店方法,电商行业的8种运营模式,自己做的网站怎么取sql数据库本文介绍两个含中文的字符串且针对相同位置字符的比较,给出实现代码。 起因 某工程需将接收的字符串和数据库里的指定字段值对比,该字符串含中文,两者允许个别字符有差异,差异数量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://www.mmbaike.com/news/48117.html

相关文章:

  • 做网站和优化上海有哪些优化网站推广公司
  • 帝国网站开发百度免费发布信息网站
  • 帝国cms企业&行业协会网站模版网络seo
  • 免费个人网站申请湖南seo
  • 深圳网站建设首选全通网络网站点击快速排名
  • 局域网搭建wordpress福州seo推广
  • 网站建设需要集齐哪5份资料如何在百度上做产品推广
  • 展示网站和营销网站的区别seo推广系统
  • 西安知名网站制作公司2023年第三波疫情9月
  • 杭州企业做网站蜘蛛搜索引擎
  • 信阳市住房和城乡建设厅网站恢复原来的百度
  • 深圳做品牌网站青岛网站排名公司
  • 呼和浩特装修网站整站优化服务
  • 做网站必要吗怎么去推广自己的店铺
  • 庄河网站建设课程培训
  • 做的网站用户密码在哪里找平台如何做推广
  • 网站seo信息隐藏四川最好的网络优化公司
  • 网站允许flash网站免费推广软件
  • 怎么在360搜索做网站推广宁波优化网页基本流程
  • 谷歌网站排名百度搜索关键词设置
  • 中卫网站建设公司爱站网影院
  • 中国建设银行官网站保本理财宁波seo公司哪家好
  • 犀牛做网站的公司奶茶网络营销策划方案
  • 自己有了域名 怎么做网站免费推广产品的平台
  • php网站开发项目实战网站页面分析
  • php会了 怎么做网站电脑版百度入口
  • 网站后台密码在哪里百度搜索引擎的原理
  • seo人员要先对网站进行诊断产品运营方案
  • 以星空做的网站模板上海网站建设开发
  • html5微网站模板免费男女打扑克的软件