Прежде всего - пожалуйста, прости меня, потому что я любитель.
Для проекта я беру в качестве входного файла файл Excel, содержащий список котят, и хочу вывести адреса, по которым эти котята были найдены.
Я реализовал код так, чтобы котенок был объектом с именем, идентификатором и примечаниями (котенку были присвоены эти атрибуты при оценке каждой ячейки в документе Excel). Раздел примечаний содержит информацию о том, где был найден котенок.
Excel document:
name | ID | Notes
--------------------
Kit | 5 | Great animal! Haha! Found at 1234 east
| | street. Incredibly ugly.
---------------------
Kat | 2 | Wow, what a charmer. from location 3456
| | Dusk road
.
.
.
В настоящее время моя программа преобразует документ Excel в строку и печатает весь раздел «Примечания» для каждого котенка. Я хочу, чтобы он извлек адрес (пытаясь получить как можно больше адресов) из остальной части строки, чтобы вывод выглядел примерно так:
1234 east street, 3456 Dusk Road, ...
Все, что я мог найти в Интернете, было о разделителях строк и т. Д., Но я не уверен, как начать думать о выделении определенных фраз из длинной изменяемой строки. Есть ли способ записать информацию по какому-либо ключевому слову, например «Найдено в» или «из местоположения», а затем остановиться на некотором периоде?
Не проще ли преобразовать каждый адрес в одну длинную строку, а вместо этого распечатать извлеченный адрес для каждого котенка?
Мой код (для справки):
public class Kitten {
private String name;
private String animalID;
private String addressFound;
public Kitten() {
super();
this.name = name;
this.animalID = animalID;
this.addressFound = addressFound;
}
//getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAnimalID() {
return animalID;
}
public void setAnimalID(String animalID) {
this.animalID = animalID;
}
public String getAddress() {
return addressFound;
}
public void setAddress(String addressFound) {
this.addressFound = addressFound;
}
}
INPUT: файл Excel с информацией о котенке. Распечатывает раздел «Примечания» для
каждый котенок
public class ReadExcel {
public void printer() {
try {
FileInputStream kittenFile = new FileInputStream(new
File("./IntakeNotesSimple.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(kittenFile);
XSSFSheet sheet = wb.getSheetAt(0);
ArrayList<Kitten> kittenList = new ArrayList<>();
for (int i= sheet.getFirstRowNum() + 1; i<= sheet.getLastRowNum();
i++) {
Kitten k = new Kitten();
Row r = sheet.getRow(i);
for (int j = r.getFirstCellNum(); j<= r.getLastCellNum(); j++)
{
Cell c = r.getCell(j);
if (j==0) {
k.setName(c.getStringCellValue());
}
if (j==1) {
k.setAnimalID(c.getStringCellValue());
}
if (j==2 && (c != null)) {
k.setAddress(c.getStringCellValue());
}
}
kittenList.add(k);
}
for (Kitten kit: kittenList) {
System.out.println(kit.getAddress() +"\n" +);
}
wb.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
public class PrintOut {
public static void main(String[] args) throws FileNotFoundException {
ReadExcel addresses = new ReadExcel();
addresses.printer();
}
}