2010-12-14 6 views
1

요구 사항은 자바에서 문자열을 분할하는 것입니다 다음 배열분할 문자열

당신이 여기에서 볼 수있는 구분 기호 문자 순서 "# {S}"있는 그대로 [ "이", "A", "문자열" "입니다"].

기존 도구를 사용하여 가장 빠르고 효율적인 방법은 무엇입니까?

저는 정규식 (String.split())을 사용하는 것이 정적 문자열을 사용하여 분할하기 때문에 낭비되는 것이라고 생각합니까?

여기에서 가정을 얻었습니다 http://www.javamex.com/tutorials/regular_expressions/splitting_tokenisation_performance.shtml. 그러나 구분 기호는 char 시퀀스이므로 StringTokenizer를 사용할 수 없습니다.

참고 : 현재 String.split()을 사용하고 있으며 문제가 없습니다. 이것은 순수한 호기심입니다.

답변

2

String.split을 사용하는 것보다 빠르다. 즉, Pattern.split이된다. 즉, 패턴을 사전 컴파일하고 후속 사용을 위해 저장한다. 항상 동일한 패턴을 사용하고 해당 패턴을 사용하여 많은 분할을 수행하면 정적 패턴이나 그 패턴에 패턴을 배치하는 것이 좋습니다.

패턴에 이없고 정규식 메타 문자가없는 경우 패턴을 만들 때 Pattern.LITERAL을 전달할 수 있습니다. 이것은 String.split으로는 할 수없는 일입니다. :-P