gpt4 book ai didi

Java读取格式化文本文件并将其分割

转载 作者:行者123 更新时间:2023-12-02 05:33:09 25 4
gpt4 key购买 nike

我正在尝试了解类的文件 I/O,并且了解基础知识,但我无法理解如何管理输入文件中的内容,输入文件的格式如下:

BusinessContact:firstName=Nikolaos;lastName=Tsantalis SocialNetworkAccount:socialNetworkType=SKYPE;accountID=tsantalis

基本上我的联系人(BusinessContact 扩展自)对象具有firstName、lastName 和middleName 属性,它还具有对象属性,例如 SocialNetworkAccount 等......

我不需要解释我的对象是如何格式化的,这些已经完成了,我想要理解的是我的 file.txt 如何输入到我的程序中以将我的联系人设置为 BusinessContact 以及设置相应的名字和姓氏,

谢谢

编辑:我特别被告知要使用有意义的 split 方法,但我还被告知(1)创建一个用于解析属性的通用方法,该方法返回一个映射,其中键对应于 attributeNames,值对应于attributeValues(这样你就可以重用相同的代码)

最佳答案

您可以使用具有不同分隔符的 Scanner 类,如下所示:

Scanner in = new Scanner(/**source*/);

in.useDelimiter(":");

String firstName, lastName;

String firstWord = in.next();

Scanner nameScanner = new Scanner(in.nextLine());

nameScanner.useDelimiter(";");

firstName = getName(new Scanner(nameScanner.next()));

lastName = getName(new Scanner(nameScanner.next()));


private String getName(Scanner nameScanner){
nameScanner.useDelimiter("=");

String nameTitle = nameScanner.next();

return nameScanner.next();
}

通过这种方式,您可以按以下部分阅读文本:

业务联系方式:firstName=Nikolaos;lastName=Tsantalis
firstName=Nikolaos;lastName=Tsantalis
firstName=Nikolaos;lastName=Tsantalis

我希望这是有道理的。

注意:此代码仅读取第一行。如果你想读第二个,我想修改它并不难。如果您也想要第二行或者有任何问题请告诉我,我将更新答案。

编辑:我刚刚注意到每一行的格式都相同,因此基本上您可以对每一行使用相同的代码。也许在一个循环中:

Scanner input = new Scanner(/**source*/);

while(input.hasNextLine()){
Scanner in = new Scanner(input.nextLine());
...
....
//The above code
}

String.split()方法:

Scanner in = new Scanner(System.in);

String[] first = in.nextLine().split(":");
String[] second = first[1].split(";");
String[] thirdA = second[0].split("=");
String[] thirdB = second[1].split("=");

for(int i = 0; i < thirdA.length; i++){
System.out.println(thirdA[i]);
System.out.println(thirdB[i]);
}

对于第一行,上面的代码将打印:

firstName
lastName
Nikolaos
Tsantalis

希望这有帮助。

关于Java读取格式化文本文件并将其分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315822/

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