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

Java【代码 19】含有换行符\r\n的字符串匹配(源码分享)处理Word文档里的Excel表格数据

含有换行符的字符串匹配

  • 1.问题说明
  • 2.问题分析
  • 3.问题解决

1.问题说明

Java 后台读取包含 Excel 表格的 Word 文档,此时正文数据字符串包含 \r\n也就是换行符,想要通过 yaml 配置文件匹配 Excel 表格的表头,但是无论如何都是匹配不上:

String excelHeader = configuration.getExcelHeader();
boolean contains = contentStr.contains(excelHeader);

配置如下:

# 1.匹配结果是 false
excelHeader: "姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n"# 2.匹配结果也是 false
excelHeader: "姓名\\r\\n身份证号\\r\\n手机号\\r\\n户籍地\\r\\n"

但是在 debug 模式下,将 excelHeader设置成 姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n时可以完成匹配:

sonString.contains("姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n");
// 此时
result = true

2.问题分析

使用 debug 模式查看了读取的正文数据,查看字符串值时发现 \r\n转换为 ASCII 值 1314

但是读取的配置字符串被转义为 \\r\\n且转换为 ASCII 时更加离谱:

3.问题解决

// 【无法匹配】配置
private String excelHeader;
// 【无法匹配】使用
configuration.getExcelHeader();// 【可以匹配】配置
private Object excelHeader;
// 【可以匹配】使用
configuration.getExcelHeader().toString();

在 Java 中,toString() 方法通常不会将 \r 转义为 \r。这是因为 toString() 方法的目的是返回对象的字符串表示形式,而不是对特殊字符进行转义。如果直接使用 String 类型,配置里的 \r都会被认为是字符串,且由于\的特殊性,会进行转义 \\导致 \r变成了 \\r前边是单个字符,后边是个字符串。


http://www.mrgr.cn/news/52236.html

相关文章:

  • 博睿数据首届“观测先锋 · 2024 可观测平台创新应用案例大赛”现已启动!
  • 代码随想录算法训练营第十七天|Day17二叉树
  • 可以在桌面上用的倒计时提醒app下载
  • 015集——c# 实现CAD excel交互(CAD—C#二次开发入门)
  • FreeRTOS - 链表机制
  • ESP32-C3实现非易失变量(Arduino IDE )
  • 广州市孤独症康复训练学校,携手迈向未来
  • 机器视觉系统硬件组成之工业相机篇
  • Python Numpy 的 View 与 Copy 使用详解与优化技巧
  • Django学习- ORM基础操作_创建数据
  • 塞班和诺基亚(中古手机图,你见过哪个?)
  • 基于在线教育系统源码的企业培训平台开发解决方案详解
  • 【Python】AI Navigator对话流式输出
  • 网络抓包 - Fiddler 安装和汉化
  • 【网络安全】从NA到P1,我是如何扩大思路的?
  • 位置式PID测试代码
  • C++ Vector 容器的模拟实现及应用详解
  • Dockerfile 中 Expose 命令的作用
  • SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
  • 12、论文阅读:利用生成对抗网络实现无监督深度图像增强