首先解析物流数据字符串,按分隔符拆分为单条记录;接着使用contains()、indexOf()等方法匹配关键状态与位置信息;然后通过substring()或正则提取时间与事件内容;最后格式化输出带序号的结构化日志列表,提升可读性。

快递物流信息查询是日常开发中常见的字符串处理场景。用户输入一串快递单号,系统需要从服务器获取对应的物流轨迹数据,并展示每一条带时间戳的记录。这个过程涉及字符串查找、数据解析和结果展示。
物流数据格式与字符串匹配
通常物流接口返回的是文本或JSON格式的数据,其中包含多条带有时间、地点和状态描述的记录。例如:
2024-05-10 08:30 北京转运中心已扫描 | 2024-05-11 14:20 上海分拨中心派送中我们需要通过关键字如“已签收”、“派送中”、“已扫描”来定位当前物流状态。使用Java的contains()方法可快速判断状态:
- contains("已签收") → 判断是否送达
- contains("派送中") → 当前正在配送
- indexOf("上海") > -1 → 查看是否到达某城市
按行分割并提取关键信息
原始数据常以竖线“|”或换行符分隔,可用split()拆分成数组逐条处理:
立即学习“Java免费学习笔记(深入)”;
// 示例代码片段String data = "2024-05-10 08:30 北京转运中心已扫描 | 2024-05-11 14:20 上海分拨中心派送中";
String[] logs = data.split("\\|");
for (String log : logs) {
System.out.println(log.trim());
}
每条日志可进一步用substring()或正则表达式提取时间与事件,提升结构化程度。
格式化输出增强可读性
将解析后的数据显示为带序号的列表,更清晰直观:
- 1. [2024-05-10 08:30] 北京转运中心 → 已扫描
- 2. [2024-05-11 14:20] 上海分拨中心 → 派送中
可在循环中加入计数器,利用String.format()对齐时间和内容,必要时添加颜色标记(控制台可用ANSI码)突出最新状态。
基本上就这些。字符串查找结合逻辑判断,再配合适当的数据展示方式,就能实现一个简洁实用的快递跟踪功能。不复杂但容易忽略细节,比如空值校验和时间排序。










