-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindingAllLinks.java
More file actions
119 lines (76 loc) · 2.5 KB
/
FindingAllLinks.java
File metadata and controls
119 lines (76 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package week2;
import edu.duke.StorageResource;
import edu.duke.URLResource;
/**
* Created by white on 11/6/15.
*/
public class FindingAllLinks {
public static void main(String[] args) {
Iterable<String> words = readURL("http://www.dukelearntoprogram.com/course2/data/newyorktimes.html");
StorageResource store = findLink(words);
printUrlsInformation(store);
}
public static Iterable<String> readURL(String url) {
URLResource ur = new URLResource(url);
return ur.words();
}
public static StorageResource findLink(Iterable<String> words) {
StorageResource sr = new StorageResource();
String searchWord = "href=";
for (String s : words) {
s = s.toLowerCase().trim().replace(" ", "");
int pos = s.indexOf(searchWord);
if (pos != -1) {
int beg = s.indexOf("\"", pos);
int end = s.indexOf("\"", beg + 1);
if (end == -1) {
end = s.length();
}
sr.add(s.substring(beg + 1, end));
}
}
return sr;
}
public static void printUrlsInformation(StorageResource store) {
Iterable<String> data = store.data();
System.out.println("URLS count:\t" + store.size());
System.out.println("Dots count:\t" + countDots(data));
System.out.println("Https count:\t" + countSecure(data));
System.out.println("Coms count:\t" + countCOMs(data));
System.out.println("End with Coms count:\t" + countEndCOMs(data));
}
public static int countDots(Iterable<String> store) {
int dots = 0;
for (String s : store) {
dots += s.length() - s.replace(".", "").length();
}
return dots;
}
public static int countSecure(Iterable<String> store) {
int https = 0;
for (String s : store) {
if (s.startsWith("https")) {
https++;
}
}
return https;
}
public static int countCOMs(Iterable<String> store) {
int coms = 0;
for (String s : store) {
if (s.contains(".com")) {
coms++;
}
}
return coms;
}
public static int countEndCOMs(Iterable<String> store) {
int coms = 0;
for (String s : store) {
if (s.endsWith(".com") || s.endsWith(".com/")) {
coms++;
}
}
return coms;
}
}