若依-用正则表达式处理返回的字符串
AI-摘要
KunKunYu GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
1、需求
需要处理的数据格式:
2.2G /home/hik/sz
36M /home/hik
1.3G /opt/opsmgr/web/components/tomcat85linux64.1/
单位有K,M,G,T返回实体类应包括数据大小和单位(如K,M,G,T等)作为属性。
如果当前目录下为空,则显示0.0,没有单位。
2、定义返回实体类
hm-manage/src/main/java/com/hm/manage/dto/FileSizeInfo.java
package com.hm.manage.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileSizeInfo {
double sizeValue; // 数值部分(如2.2)
String unit; // 单位(如"G")
String path; // 路径(如"/home/hik/sz")
}
3、构造方法
hm-manage/src/main/java/com/hm/manage/utils/FileSizeParser.java
package com.hm.manage.utils;
import com.hm.manage.dto.FileSizeInfo;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FileSizeParser {
// 匹配模式:数值(含小数点) + 单位字母 + 制表符 + 路径
private static final Pattern LINE_PATTERN =
Pattern.compile("^(\\d+\\.?\\d*)([TGMK]?)\\t(.+)$");
/**
* 解析文件大小信息行并转换为FileSizeInfo对象
*
* @param line 输入字符串行,应包含文件大小信息(格式示例:"12.3 KB")
* @return FileSizeInfo 包含解析后的文件尺寸信息对象
* @throws IllegalArgumentException 当输入行格式不符合预定义模式时抛出
*/
public static FileSizeInfo parseLine(String line) {
// 使用预定义正则表达式匹配并验证输入行格式
Matcher matcher = LINE_PATTERN.matcher(line.trim());
if (!matcher.find()) {
throw new IllegalArgumentException("Invalid format: " + line);
}
// 从匹配结果中提取并转换三个组成部分:
// 1. 数值部分转换为double类型
// 2. 可选单位前缀(可能为空字符串)
// 3. 基础单位字符串
return new FileSizeInfo(
Double.parseDouble(matcher.group(1)),
matcher.group(2).isEmpty() ? "" : matcher.group(2),
matcher.group(3)
);
}
/***
* 根据输入的文件信息,判断文件大小是否超过限制
* @return
*/
public static String getResult(FileSizeInfo fileSizeInfo,Double sizeline){
// 如果文件的单位为空,直接返回正常
if (fileSizeInfo.getUnit().isEmpty()) {
return "正常";
} else if (fileSizeInfo.getUnit().equals("T")) {
return "异常";
} else if (fileSizeInfo.getUnit().equals("K")) {
return "正常";
} else if (fileSizeInfo.getUnit().equals("M")) {
return "正常";
} else if (fileSizeInfo.getUnit().equals("G")) {
if (fileSizeInfo.getSizeValue() > sizeline) {
return "异常";
}
return "正常";
} else {
return "异常";
}
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 山山
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果