-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParser.java
More file actions
43 lines (37 loc) · 1.22 KB
/
Copy pathParser.java
File metadata and controls
43 lines (37 loc) · 1.22 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
/* WEBSERVER Parser.java
* EE422C Project 7 submission by
* Anthony Bauer
* amb6869
* 16480
* Grant Uy
* gau84
* 16480
* Slip days used: <1>
* Fall 2016
*/
package assignment7;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Parser {
public static String packageStrings(Object... arr) {
return packageStrings(Arrays.asList(arr));
}
public static String packageStrings(List<Object> list) {
return list.stream()
.map(o -> ((o instanceof List) ? ((List)o).stream().map(e -> escapeString(e.toString())).collect(Collectors.joining(" ")).toString() : escapeString(o.toString())))
.collect(Collectors.joining(" "));
}
public static String escapeString(String str) {
return str.replaceAll(" ", "~ "); // escape with tilde
}
public static String[] parseString(String str) {
return Stream.of(str.split("(?<!~) ")) // negative lookbehind
.map(s -> s.replaceAll("~ ", " ")) // strip escape characters
.toArray(String[]::new);
}
public static String cleanString(String str) {
return str.replaceAll("[^A-Za-z0-9_ ]","");
}
}