所以我必须做一些工作,我仍然是Java的新手,我们刚开始学习它。我们只使用像“模式”,“匹配”这样的表达式,对于你们大多数人来说,arraylist的东西非常基本。它是一个叫做数据集成的类的工作,我们基本上把维基百科链接放在一起,我们会定期进行表达,如果你搜索特定的作者,它会出现他们的信息,我们将所有数据保存在XML文件中。在那个xml中,我们还必须为我们搜索的每个作者创建一个ID。 例如,如果你首先搜索JK_ROWLING,她将是01,然后我们搜索VERONICA_ROTH,所以她是02,依此类推,当然也将它保存在文件中。
这里有一些代码供你们了解workd和正则表达式,所以在这篇文章中我搜索任何作者的出生日期
public static String procuraDataNascimento(String nome_escritor) throws IOException{
String link = "https://pt.wikipedia.org/wiki/" + nome_escritor;
String pesquisa ="";
HttpRequestFunctions.httpRequest(link,pesquisa,"ESCRITORES.txt");
String Nasc_er0 = "<td scope=\"row\" style=\"vertical-align: top; text-align: left; font-weight:bold; padding:4px 4px 4px 0\">Data de nascimento</td>";
String Nasc_er = "<td style=\"vertical-align: top; text-align: left; padding:4px\"><a href=\"/wiki/(.+)#Nascimentos\" title=\"(.+)\">(.+)</a> de <a href=\"/wiki/(.+)\" title=\"(.+)\">(.+)</a></td>";
String Nasc_er2 = "<td style=\"vertical-align: top; text-align: left; padding:4px\">(.*)<a href=\"/wiki/(.+)#Nascimentos\" title=\"(.+)\">(.+)</a> de <a href=\"/wiki/(.+)\" title=\"(.+)\">(.+)</a>(.*)</td>";
String Nasc_er3 = "<td style=\"vertical-align: top; text-align: left; padding:4px\">(.+)</td>";
String Nascimento = null;
Scanner ler = new Scanner(new FileInputStream("ESCRITORES.txt"));
Pattern p0 = Pattern.compile(Nasc_er0);
Pattern p = Pattern.compile(Nasc_er);
Pattern p2 = Pattern.compile(Nasc_er2);
Pattern p3 = Pattern.compile(Nasc_er3);
while (ler.hasNextLine()) {
String linha = ler.nextLine();
Matcher m = p0.matcher(linha);
if(m.find()){
linha = ler.nextLine();
Matcher t = p.matcher(linha);
Matcher r = p2.matcher(linha);
Matcher q = p3.matcher(linha);
if (t.find()) {
Nascimento = t.group(2) + " de " + t.group(5);
}
else if (r.find()) {
Nascimento = r.group(3) + " de " + r.group(5);
}
else if(q.find()){
Nascimento = q.group(1);
}
}
}
ler.close();
return Nascimento;
}
当我把这个
{
String x = Wrapper_escritores.procuraDataNascimento("Roberto_Bolaño");
System.out.println(x);
}
它显示了RobertoBolãno的出生日期。 我也已经为作者提供了构造函数和获取和集合的类。 你们能帮忙吗?你知道怎么看我们到目前为止学到的唯一东西是非常基本的吗? 谢谢!!
答案 0 :(得分:2)
您可以生成UUID
一个代表不可变universally unique identifier (UUID) 的类,类似
String name = "Roberto Bolãno";
UUID uuid = UUID.nameUUIDFromBytes(name.getBytes(Charset.forName("UTF-8")));
System.out.println(uuid.toString());
哪个输出
4fb97aea-d741-3d78-a037-0eaa8848fc7a
或者,创建一个Map<Integer, String>
(请参阅Tutorial)并在添加新作者时递增计数器(如果您的应用程序需要重新启动,则还需要保留这些值)
答案 1 :(得分:0)
使用link
作为ID。假设维基百科URL对作者没有变化,它们随着时间的推移会保持稳定。此外,保证不同作者拥有不同的维基百科URL。
如果您需要ID为字母数字,请通过加密哈希函数(如SHA-1)运行link
,并将生成的byte[]
打印为十六进制字符串。