티스토리 뷰
| 를 구분자로 하고 { }로 감싸인 키를 value로 대체해야 하는 상황이었다.
String.contains("|") 은 잘 통과했는데
String.split("|") 을 썼더니 장렬하게 error를 뿜었다.
찾아보니 몇몇 특수문자는 그대로 사용하지 않고 앞에 \\을 붙여야 한다고 한다.
2개를 붙이는 이유는 출처에 나와있긴 한데 정확히 해석이 안된다 ㅠㅠ
Java에서 '\|' 로 인식한 문자를 정규식에서 '|'로 인식하는데,
'\|'로 인식하기 위해서 \도 특수문자이기 때문에 escape 문자인 \를 앞에 한번더 쓰는 것이라고 이해했다;;;;
그런데 split 안에 들어가는 문자가 정규식인가 하는 의문점이 남아있다.
어디선가 정규식은 \\가 아니라 \\\\를 붙여야 한다는 글도 보았기 때문이다.
이것은 기회가 되면 다시 자세히 알아보고 글을 수정하겠다.
출처: https://stackoverflow.com/questions/16311651/java-string-split-by
String.replace와 replaceAll에는 결과적으로 적용이 안된다.
특수문자가 {}여서 그랬을 수도 있다.
결국은 적용이 안되어서 split으로 대체했다 ㅠㅠ
출처: http://lazli.tistory.com/47
https://stackoverflow.com/questions/14442162/java-replace-all-square-brackets-in-a-string
그러나 다른 방법이 있었다!
java String과 관련된 라이브러리를 사용하면 손쉽게 해결!
org.apache.commons.lang 라이브러리를 사용하면 StringUtils.split와 StringUtils.replace로 특수문자도 처리할 수 있다.