gpt4 book ai didi

java - 从文本导入数据

转载 作者:行者123 更新时间:2023-12-01 13:52:42 25 4
gpt4 key购买 nike

我有一堆文本文件,其中的条目如下所示:

20662 = {
name="Durgulel"
dynasty=100603
martial=7
diplomacy=4
intrigue=5
stewardship=4
learning=6
religion="orthodox"
culture="alan"
trait="chaste"
trait="arbitrary"
trait="scholarly_theologian"
father=41592
992.1.1={
birth="992.1.1"
}
1068.1.1={
death="1068.1.1"
}
}

是否有一种标准方法可以将这样的值读取到变量中?

最佳答案

您可以使用 StreamTokenizer;应该看起来大致像这样(未经测试):

static Map<String,Object> parse(
StreamTokenizer tokenizer, int endToken) throws IOException {
Map<String,Object> result = new TreeMap<String,Object>();
while (tokenizer.nextToken() != endToken) {
String key = tokenizer.sval;
if (tokenizer.nextToken() != '=') {
throw new RuntimeException("'=' expected");
}
if (tokenizer.nextToken() == '{') {
result.put(key, parse(tokenizer, '}'));
} else {
tokenizer.nextToken();
result.put(key, tokenizer.sval);
}
}
return result;
}

static void main(String[] args) throws IOException {
Reader reader = new FileReader(args[0]);
Map<String,Object> parsed = parse(
new StreamTokenizer(reader), StreamTokenizer.TT_EOF);
System.out.println(parsed);
}

附:这将需要对 922.1.1 和类似 key 进行一些额外的处理。如果格式确实只是基于行,那么使用 BufferedReader.readLine()、trim() 并检查 {/}/=

可能会更直接

p.p.s 如果变量指的是实例成员变量,则可以使用 Java 反射 API 来相应地设置它们(而不是像示例中那样读取映射)。您将提交要填充的对象,然后通过 object.getClass().getField(key).set(object, value) 查找并设置成员

关于java - 从文本导入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850008/

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