Как вытащить часть ссылку из строки с помощью java?
Есть файл со строками. Я принимаю по одной строке и проверяю, есть ли href= в ней, если есть, то мне нужно вытащить ссылку в кавычках после этой href=. Как мне это лучше всего сделать?
Такая связка у меня, увы, не работает

public static void main(String[] args) {
try {
File file = new File("C:/Users/Hertz/Desktop/SpringCourse-master/untitled/src/myFile.txt");
FileReader fr = new FileReader(file);
BufferedReader reader = new BufferedReader(fr);
String line = reader.readLine();
while (line != null) {
if(line.contains("href=")) {
System.out.println(line.substring(line.indexOf('"')+1, line.indexOf('"')));
}
line = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
В представленном коде нет различия между открывающей и закрывающей кавычками, кроме того, в текстовом файле кавычки сдвоенные: href=""http://..."".
Следует задавать смещение на ширину префикса href="", а также искать первую закрывающую кавычку при помощи метода String::indexOf(int c, int from)
Данный код можно исправить без использования регулярных выражений:
File file = new File("C:/Users/Hertz/Desktop/SpringCourse-master/untitled/src/myFile.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
String tag = "href=\"\"";
while ((line = reader.readLine()) != null) {
int pos = line.indexOf(tag);
if (pos > -1) {
int from = pos + tag.length();
System.out.println(line.substring(from, line.indexOf('"', from)));
}
}
} catch (IOException e) {
e.printStackTrace();
}