package sam.string; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; public class SplitString { public static List<String> split(String s, String delimeter) { Objects.requireNonNull(s); Objects.requireNonNull(delimeter); if(s.isEmpty() || delimeter.isEmpty()) return Collections.singletonList(s); List<String> list = new ArrayList<>(); int start = 0, end = 0; while(true) { end = s.indexOf(delimeter, start); if(end < 0) { list.add(s.substring(start)); break; } else { list.add(s.substring(start, end)); start = end + delimeter.length(); } } return list; } }
test
@Test void test() { check("1 2 3", " "); check("1122123", "12"); check("1abc2llc3kollma0allmi", "ll"); check("ll1abc2llc3kollma0allmi", "ll"); } private void check(String s, String deli) { List<String> actual = SplitString.split(s, deli); List<String> expected = Pattern.compile(deli, Pattern.LITERAL).splitAsStream(s).collect(Collectors.toList()); System.out.printf("split(\"%s\", \"%s\") = %s\n", s, deli, actual); assertEquals(expected, actual); }
split("1 2 3", " ") = [1, 2, 3] split("1122123", "12") = [1, 2, 3] split("1abc2llc3kollma0allmi", "ll") = [1abc2, c3ko, ma0a, mi] split("ll1abc2llc3kollma0allmi", "ll") = [, 1abc2, c3ko, ma0a, mi]
code highlighted using: hilite.me
No comments:
Post a Comment