前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >写代码时,手敲是工程延期的万恶之源,不信你看这个

写代码时,手敲是工程延期的万恶之源,不信你看这个

作者头像
烟雨平生
发布2025-03-17 19:56:44
发布2025-03-17 19:56:44
3100
代码可运行
举报
文章被收录于专栏:数字化之路数字化之路
运行总次数:0
代码可运行

如果result变量的值是下面这个时,

代码语言:javascript
代码运行次数:0
运行
复制
"## 暂无标准配置型号,请与SMC联系!\n" +        "\n" +        "竞争对手型号:"

上面划线部分的代码,返回是true还是false?

先说答案:false。

这个知识点很小,讲明白了也很简单,这次咱们把重点放在排查问题的思路上。

复现

代码语言:javascript
代码运行次数:0
运行
复制
@Test
public void testStrContains() {
    String resultMsg = "## 暂无标准配置型号,请与SMC联系!\n" +
            "\n" +
            "竞争对手型号:";
    String checkFlag = "暂无标准配置型号,请与SMC联系!";

    assertThat("期望是true", resultMsg.contains(checkFlag));
}

感觉“!”可能是个特殊字符,去掉试试!!

去掉后,就返回true了

问题出哪了?

可能出现了特殊字符。

这种特殊字符,肉眼不好识别,最好的办法,还是看字符的编码。

话说,计算机上处理的任何字符都要经过编码/解码吧! 从编码的角度分析一下 要实现从 char 到 Byte的相互转换则必须编码 字符是怎么编码的? 编码(Encoding):信息从一种形式或格式转换为另一种形式或格式的过程。 计算机基础篇 | 一看就懂的字符集、ASCII、GBK、UTF-8、Unicode、乱码、字符编码问题 唐成,公众号:的数字化之路淘宝API返回的空格trim()不掉,好着急好生气

怎么查?

打个断点,来看看“!”的Unicode编码

直接看,都是数字!一下子也搞不清那个数字是哪个字符的编码。

咋办?

可以使用String类的这个API:

代码语言:javascript
代码运行次数:0
运行
复制
/** * Converts this string to a new character array. * * @return  a newly allocated character array whose length is the length *          of this string and whose contents are initialized to contain *          the character sequence represented by this string. */
public char[] toCharArray() {

入参中的“!”编码是 65281

校验标识中的“!”编码是 33

从字符的角度看,“!”【65281】和“!”[33]是两个不同字符,那么在使用contains方法进行比较时,必然不匹配,然后返回false了。

案破了!

复盘

当时写代码时,代码中的

代码语言:javascript
代码运行次数:0
运行
复制
"暂无标准配置型号,请与SMC联系!"

是从哪来的,已经不记得了。很可以是手工敲上去的。

因为,后来从日志中copy来的字符串,看也是全角的。

https://gitee.com/baidumap/sse-chat/blob/main/src/test/java/cn/aias/ssechat/global/StringUtilsTest.java

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 的数字化之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 复现
  • 问题出哪了?
  • 怎么查?
  • 复盘
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档