我正在尝试创建一个解析文本文件的方法,并返回冒号后的url字符串。文本文件如下所示(适用于机器人):
关键词:URL
关键字,关键字:URL
所以每一行都包含一个关键字和一个网址,或多个关键字和一个网址。
有谁可以给我一些指导如何做到这一点?谢谢。
我相信我需要使用扫描仪但却无法找到任何想要做与我类似的事情的人。
谢谢。
编辑:我尝试使用以下建议。不太有效。任何帮助将不胜感激。
public static void main(String[] args) throws IOException {
String sCurrentLine = "";
String key = "hello";
BufferedReader reader = new BufferedReader(
new FileReader(("sites.txt")));
Scanner s = new Scanner(sCurrentLine);
while ((sCurrentLine = reader.readLine()) != null) {
System.out.println(sCurrentLine);
if(sCurrentLine.contains(key)){
System.out.println(s.findInLine("http"));
}
}
}
输出:
hello,there:http://www.facebook.com
null
whats,up:http:/google.com
sites.txt:
hello,there:http://www.facebook.com
whats,up:http:/google.com
答案 0 :(得分:2)
您应该逐行读取文件BufferedReader
,我建议使用正则表达式解析文件。
模式
(?<=:)http://[^\\s]++
这样做可以解决这个问题:
[^\\s]++
(?<=:)
以下是使用String
代理文件的简单示例:
public static void main(String[] args) throws Exception {
final String file = "hello,there:http://www.facebook.com\n"
+ "whats,up:http://google.com";
final Pattern pattern = Pattern.compile("(?<=:)http://[^\\s]++");
final Matcher m = pattern.matcher("");
try (final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(file.getBytes("UTF-8"))))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
m.reset(line);
while (m.find()) {
System.out.println(m.group());
}
}
}
}
输出:
http://www.facebook.com
http://google.com
答案 1 :(得分:0)
使用BufferedReader,对于文本解析,您可以使用正则表达式。
答案 2 :(得分:0)
您应该使用拆分方法:
String strCollection[] = yourScannedStr.Split(":", 2);
String extractedUrl = strCollection[1];
答案 3 :(得分:-1)