gpt4 book ai didi

java - 带空格的字符串解析

转载 作者:行者123 更新时间:2023-12-01 19:36:11 25 4
gpt4 key购买 nike

我正在读取一个文件,其中每个点看起来都像这样:

EmpId:6428 EmpName:Josh 类(class):[数学、英语、生物、艺术、comp]

我想要 EmpIdEmpName 和类。我按空间分割它,这反过来又分割了类。所以基本上在类列表的最后,我只是得到Classes:[Math,。但我想要完整的类(class)列表。请分享您关于如何拆分此内容的建议。谢谢

private static class EmpResource {
private String empId;
private String empName;
private List<String> classes;

public TableResource(final String line) {
String[] strs = line.split(" ");
this.empId = strs[0].split(":")[1];
this.empName = strs[1].split(":")[1];
String classes = strs[2].split(":")[1];
convertToClassList(classes);
}


void setClasses(List<String> classes) {
this.classes = classes;
}


private void convertToClassList(String classes) {

if (!"null".equals(class)) {
String replace = indexString.replaceAll("^\\[|]$", "");
setIndexes(new ArrayList<>(Arrays.asList(replace.split(", "))));
}
}
}

预期结果:

empId 6428
empName Josh
List<String> classes [Math,English,Bio,Art,comp]

实际结果:

empId 6428
empName Josh
List<String> classes [Math,

最佳答案

正如评论中所指出的,一个有效但肮脏的修复方法是不拆分内部空格分隔的“类”元素,这将使初始拆分以空白前面没有逗号为条件。

例如,仅当空格前面没有逗号时,您才可以使用负向后查找来进行分割。

示例

String test = "EmpId:6428 EmpName:Josh Classes:[Math, English, Bio, Art, comp]";
System.out.println(test.split("(?<!,) ")[2]);

输出

Classes:[Math, English, Bio, Art, comp]

一般来说,如果语法变得更加复杂,您可能需要考虑实现自己的解析器。

正则表达式在适得其反之前只能让你走这么远。

关于java - 带空格的字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458529/

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