我必须带这个文本文件:
Ulric Schwartz ullamcorper@Quisque.ca Fringilla Donec PC urna convallis erat
Jesse Conrad Nunc@eunulla.edu Magna Praesent Interdum Incorporated et netus
et
Ethan Eaton cursus@Nullam.co.uk Sed Consequat Auctor Institute posuere
vulputate lacus
Griffin Stephenson habitant@mattis.com Purus Sapien Institute auctor non
feugiat
Alan Howell lorem@penatibusetmagnis.com Mi Limited non sollicitudin a
Sawyer Stokes ornare@utmiDuis.com Ut Institute nibh Phasellus nulla
Nigel Sanford adipiscing@euerat.org Lacus Varius Corp Integer vitae nibh
并扫描它以查找电子邮件地址,这意味着@后跟至少三个字符,一个句点,以及至少另外两个字符。我理解如何扫描文件:
while(fscan.hasNext())
{
//scan for emails goes in here
}
但我不确定如何扫描电子邮件。 这就是我所拥有的:
import java.io.*;
import java.util.Scanner;
public class lab11_emena {
public static void main(String[] args)
{
Scanner cscan = new Scanner(System.in);
System.out.println("Please enter the file name.");
String filename = " ";
filename= cscan.nextLine();
File inFile = new File(filename);
if(!inFile.exists())
{
System.out.println("File " + filename + " does not exist.");
System.exit(0);
}
Scanner fscan = new Scanner(inFile);//I am getting an error
here? Saying inFile was thrown
System.out.println("Opened file " + filename);
}
}
答案 0 :(得分:0)
您必须使用扫描仪才能阅读字符。然后检查每个事物的不同要求,如@字符。因此,如果char ==“@”,那么它将继续寻找其他要求。然后让它前进和后退,直到它在电子邮件的任何一端找到空格,然后你可以导入它们之间的所有字符。
答案 1 :(得分:0)
我首先建议在不同的信息片段(即逗号)之间使用分隔符。
实施例 Ulric Schwartz,ullamcorper @ Quisque.ca,Fringilla Donec,PC urna convallis erat
现在,如果您的所有行都具有相同数量的“类别(每个逗号之间的信息)”信息(上面的示例将有4个)。然后你可以将每个项目加载到一个数组中,然后拉出#2,6,10等。
如果类别会有所不同,那么您必须按照D3sast3r的说明进行操作,找到@,然后向前扫描并向后扫描到空格。
答案 2 :(得分:0)
尝试这样的事情。
将整个文件扫描为arraylist。默认情况下,数组使用空格作为分隔符,因为在有效的电子邮件地址中没有空格,您就可以了。
while(inputFile.hasNext()) {
ArrayList.add(inputFile.next());
}
这会将每个字符放入数组的元素中,使用空格分隔它们。所以元素0 = Urlic,元素1 = Schwartz等...现在你可以使用一个正则表达式对象,因为gtgaxiola建议比较数组的每个元素
String email = "\\w+@\\w{3,}\\.\\w{2,}";
这基本上是一个基于您的要求的字符串对象。 “stuff”然后是@符号,然后至少3个字符,然后是一个句点,然后至少2个字符
现在使用for循环和if语句
搜索数组for(i = 0; i < ArrayList.length(); i++) {
if(ArrayList.get(i).contains(email) {
//do something with the email address
}
}