gpt4 book ai didi

java - 使用扫描器 useDelimiter 解析文本

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:41 26 4
gpt4 key购买 nike

希望解析以下文本文件:
示例文本文件:

<2008-10-07>text entered by user<Ted Parlor><2008-11-26>additional text entered by user<Ted Parlor>

我想解析上面的文本,这样我就可以拥有三个变量:

v1 = 2008-10-07
v2 = text entered by user
v3 = Ted Parlor
v1 = 2008-11-26
v2 = additional text entered by user
v3 = Ted Parlor

我尝试使用扫描仪和 useDelimiter,但是,我对如何设置它以获得如上所述的结果有疑问。这是我的第一次尝试:

import java.io.*;
import java.util.Scanner;

public class ScanNotes {
public static void main(String[] args) throws IOException {
Scanner s = null;
try {
//String regex = "(?<=\\<)([^\\>>*)(?=\\>)";
s = new Scanner(new BufferedReader(new FileReader("cur_notes.txt")));
s.useDelimiter("[<]+");

while (s.hasNext()) {
String v1 = s.next();
String v2= s.next();
System.out.println("v1= " + v1 + " v2=" + v2);
}
} finally {
if (s != null) {
s.close();
}
}
}
}

结果如下:

v1= 2008-10-07>text entered by user v2=Ted Parlor> 

我想要的是:

v1= 2008-10-07 v2=text entered by user v3=Ted Parlor
v1= 2008-11-26 v2=additional text entered by user v3=Ted Parlor

非常感谢任何允许我分别提取所有三个字符串的帮助。

最佳答案

您可以使用 \s*[<>]\s*作为分隔符。即 < 中的任何一个或 > , 以及任何前后的空格。

要使其正常工作,不得有任何 <>在用于标记输入中的日期和用户字段的输入以外的输入中(即消息中没有 I <3 U!!)。

此分隔符允许条目中有空字符串部分,但它还会在任意两个条目之间留下空字符串标记,因此必须手动丢弃它们。

import java.util.Scanner;

public class UseDelim {
public static void main(String[] args) {
String content = " <2008-10-07>text entered by user <Ted Parlor>"
+ " <2008-11-26> additional text entered by user <Ted Parlor>"
+ " <2008-11-28><Parlor Ted> ";
Scanner sc = new Scanner(content).useDelimiter("\\s*[<>]\\s*");
while (sc.hasNext()) {
System.out.printf("[%s|%s|%s]%n",
sc.next(), sc.next(), sc.next());

// if there's a next entry, discard the empty string token
if (sc.hasNext()) sc.next();
}
}
}

这打印:

[2008-10-07|text entered by user|Ted Parlor]
[2008-11-26|additional text entered by user|Ted Parlor]
[2008-11-28||Parlor Ted]

另见

关于java - 使用扫描器 useDelimiter 解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935854/

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