public static String findChannels(List<String> lines, String audioLine) throws EncoderParseException { String channels = RegexUtil.search(audioLine, "Hz,\\s*\\d+\\.\\d+"); String chane=RegexUtil.search(channels,"\\d+\\.\\d+"); List<String> ch= Arrays.asList(chane.split("\\.")); if (ch.size() == 0) throwParseError(lines, "AudioInfo-channels"); if (ch.size() == 1) return ch.get(0); return String.valueOf(Integer.parseInt(ch.get(0))*10+Integer.parseInt(ch.get(1))); }代码优化
时间: 2023-12-10 12:38:44 浏览: 119
可以考虑使用正则表达式的分组功能来直接获取到小数点前后的数字,而不需要再将字符串进行拆分和转换。代码如下:
```
public static String findChannels(List<String> lines, String audioLine) throws EncoderParseException {
String channels = RegexUtil.search(audioLine, "Hz,\\s*(\\d+\\.\\d+)");
if (channels == null) {
throwParseError(lines, "AudioInfo-channels");
}
Matcher matcher = Pattern.compile("(\\d+)\\.(\\d+)").matcher(channels);
if (matcher.find()) {
int integerPart = Integer.parseInt(matcher.group(1));
int decimalPart = Integer.parseInt(matcher.group(2));
return String.valueOf(integerPart * 10 + decimalPart);
} else {
throwParseError(lines, "AudioInfo-channels");
}
}
```
这样代码更简洁,也更易读。同时,对于没有找到数字或者数字格式不正确的情况,都会抛出解析异常,避免了返回空字符串或者错误的结果。
阅读全文