Guava의 Splitter 예시의 반대인 Joiner 예시이다.
trimResults()와 omitEmptyString()가 많이 쓰인다.
Guava의 Joiner.on과 좀 다르게 다양한 파싱을 할 수 있도록 on() 뿐 아니라 onPattern(), on(CharMatcher) 메솓,등을 사용할 수 있다. 특정 길이(fixedLength)나, 파싱 갯수(limit)를 활용하여 파싱할 수 있다.
/*
List
*/
@Test
public void splitterTest1() {
String input = "samuel,kent, flynn";
// not trim
List<String> list = Splitter.on(",").splitToList(input);
logger.info("{}", list);
// trim
List<String> list1 = Splitter.on(",").trimResults().splitToList(input);
logger.info("{}", list1);
}
// 결과
// [samuel, kent, flynn]
// [samuel, kent, flynn]
/*
empty string
*/
@Test
public void splitterTest2() {
String input = "samuel,kent,flynn,,";
List<String> list = Splitter.on(",").trimResults().splitToList(input);
logger.info("before omit - {}", list);
List<String> list1 = Splitter.on(",").omitEmptyStrings().splitToList(input);
logger.info("after omit - {}", list1);
}
// 결과
// before omit - [samuel, kent, flynn, , ]
// after omit - [samuel, kent, flynn]
/*
Map
*/
@Test
public void splitterTest3() {
String input = "name=samuel&age=41&department=server&id=1001237";
Map<String, String> map = Splitter.on("&").withKeyValueSeparator("=").split(input);
MapUtils.debugPrint(System.out, "map", map);
}
/*
결과
map =
{
name = samuel java.lang.String
age = 41 java.lang.String
department = server java.lang.String
id = 1001237 java.lang.String
} java.util.Collections$UnmodifiableMap
*/
/*
Map, multiple separator, onPattern/anyOf
*/
@Test
public void splitterTest4() {
String input = "name=samuel&age=41&department=server,id=1001237";
Map<String, String> map = Splitter.onPattern("[&|,]").withKeyValueSeparator("=").split(input);
MapUtils.debugPrint(System.out, "map", map);
map = Splitter.on(CharMatcher.anyOf("[&|,]")).withKeyValueSeparator("=").split(input);
MapUtils.debugPrint(System.out, "map", map);
}
/*
결과
map =
{
name = samuel java.lang.String
age = 41 java.lang.String
department = server java.lang.String
id = 1001237 java.lang.String
} java.util.Collections$UnmodifiableMap
*/
@Test
public void splitterTest5() {
String input = "111222333444555";
List<String> list = Splitter.fixedLength(3).splitToList(input);
logger.info("{}", list);
}
// 결과
// [111, 222, 333, 444, 555]
/*
limit
*/
@Test
public void splitterTest6() {
String input = "111,22,33333,444,555";
List<String> list = Splitter.on(",")
.limit(2)
.splitToList(input);
logger.info("{}", list);
list = Splitter.on(",")
.limit(3)
.splitToList(input);
logger.info("{}", list);
list = Splitter.on(",")
.limit(4)
.splitToList(input);
logger.info("{}", list);
list = Splitter.on(",")
.limit(5)
.splitToList(input);
logger.info("{}", list);
list = Splitter.on(",")
.limit(6)
.splitToList(input);
logger.info("{}", list);
}
// 결과
// [111, 22,33333,444,555]
// [111, 22, 33333,444,555]
// [111, 22, 33333, 444,555]
// [111, 22, 33333, 444, 555]
// [111, 22, 33333, 444, 555]
'general java' 카테고리의 다른 글
Collections.singleton(null)와 Collections.removeAll(Collections.singleton(null)) 예시 (0) | 2016.03.15 |
---|---|
Guava의 Predicate과 Filter를 이용한 예시 (0) | 2016.03.15 |
Guava의 Joiner 예시 (0) | 2016.03.13 |
[java] guava를 이용하여 끝에 붙은 comma(,) 제거하기 (0) | 2016.03.07 |
zookeeper Max 노드(znode) 크기 (0) | 2016.01.20 |