blob: 9b87a259331863876dee7da1b48b33cb9128adb9 (
plain)
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
|
package me.laria.code.idea_caseconv;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
class WordSplitConverter {
private static List<String> split(String s) {
Pattern decamelize = Pattern.compile("(?<![A-Z])[A-Z]");
s = decamelize.matcher(s).replaceAll(" $0");
String[] all_parts = s.split("[\\s_-]");
ArrayList<String> parts = new ArrayList<>();
for (String p : all_parts) {
p = p.trim();
if (!p.equals("")) {
parts.add(p.toLowerCase());
}
}
return parts;
}
public static String convert(String in, String glue, WordTransformer transform) {
List<String> partsIn = split(in);
ArrayList<String> partsOut = new ArrayList<>();
int i = 0;
for (String part : partsIn) {
transform.transform(i, part).ifPresent(partsOut::add);
i++;
}
return String.join(glue, partsOut);
}
}
|