gpt4 book ai didi

java - 解析复杂的文本行并将每个条目保存到变量中 - java

转载 作者:行者123 更新时间:2023-12-01 12:31:38 27 4
gpt4 key购买 nike

我有如下自动生成的行:

  40   1655.28   -------   212.61     2.01   ( 40.31%) (  9)STRE C=C (aminoA - part A) -> 1

除了 line.split("\\s+"); 之外,还有什么合理且“简单”的方式来分割前一行吗? ?并得到如下内容:

a0=40
a1=1655.28

...

ai=40.31
aii=9
aiii=STRE C=C
aiv=aminoA - part A

line.split("\\s+"); 的问题是我有圆括号,两个条目之间没有空格;例如:( 9)STRE C=C(aminoA - part A) ,其结果如下: ax1=( , ax2=9)STREay1=(aminoA 。这当然可以被捕获,但在这种情况下,我需要通过多个正则表达式检查每个条目 - 对我来说 - 复杂嵌套的 if 条件。

最佳答案

所以,如果没有固定列,我会使用正则表达式。我还会使用一个类来保存您的列以便于查找。

class Result {

private static Pattern resultRegex = Pattern.compile(
"(\\d+)" // 40
+ "\\s+"
+ "(\\d+\\.\\d+)" // 1655.28
+ "\\s+\\-+\\s+"
+ "(\\d+\\.\\d+)" // 212.61
+ "\\s+"
+ "(\\d+\\.\\d+)" // 2.01
+ "\\s+\\(\\s*" // (
+ "(\\d+\\.\\d+)" // 40.31
+ "%\\)\\s+\\(\\s*" // ) (
+ "(\\d)" // 9
+ "\\)" // )
+ "(.*)" // STRE C=C
+ "\\(" // (
+ "(.*)" // aminoA - part A
+ "\\)"); // )

private final int col0;
private final double col1;
private final double col2;
private final double col3;
private final double col4;
private final int col5;
private final String col6;
private final String col7;

Result(String data) {

Matcher matcher = resultRegex.matcher(data);
matcher.find();
col0 = Integer.parseInt(matcher.group(1));
col1 = Double.parseDouble(matcher.group(2));
col2 = Double.parseDouble(matcher.group(3));
col3 = Double.parseDouble(matcher.group(4));
col4 = Double.parseDouble(matcher.group(5));
col5 = Integer.parseInt(matcher.group(6));
col6 = matcher.group(7);
col7 = matcher.group(8);
}

@Override
public String toString() {
return new StringBuilder()
.append("col0=").append(col0)
.append(",col1=").append(col1)
.append(",col2=").append(col2)
.append(",col3=").append(col3)
.append(",col4=").append(col4)
.append(",col5=").append(col5)
.append(",col6=").append(col6)
.append(",col7=").append(col7).toString();
}
}

然后您可以从文件/流/任何内容中读取每一行并执行此操作

String data = "40   1655.28   -------   212.61     2.01   ( 40.31%) (  9)STRE C=C (aminoA - part A) -> 1";
Result result = new Result(data);
System.out.println(result);

显然,我没有添加任何验证,但希望这是一个足够好的开始示例。

关于java - 解析复杂的文本行并将每个条目保存到变量中 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25885350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com