2014-11-11 2 views
-1

알려진 길이의 입력 문자열이 있습니다. 이 입력 문자열을 길이가 다른 30 개의 하위 문자열로 분할해야합니다. 예를 들어 : -문자열을 다른 길이의 부분 문자열로 분할하는 Java API

Input string: "abcdefghijklmnopqrstuvwxyz" 
Output string: "a","bcd","efgij","kl","mnopqrstu","v","wx","yz" 

나는 내가 문자열을 분할 할에 따라 길이를 제공하고, 하나의 출력을 얻을 수있는 API 또는 방법의 어떤 종류가 있는지 알고 싶어 여러 단계로 이동하지 마세요.

도움이 될 것입니다.

+2

사용 문자열 .. –

+0

나는 하나의 단계로 그것을 할 수있는 무언가를 원한다. – DDas

+0

어떻게 자바가 문자열을 나누고 싶은지 알 수있다. –

답변

1

하는 API에 대한 필요가 없습니다 : 정규 표현식에 대한

더. 그것은 그렇게하는 방법 작성 단지 1 분에 나섭니다 :

public static List<String> splitString(String inputString, int... lengths) { 

    List<String> substrings = new ArrayList<String>(); 

    int start = 0; 
    int end = 0; 

    for(int length : lengths) { 

     start = end; 
     end = start + length; 

     String substring = inputString.substring(start, end); 
     substrings.add(substring); 
    } 

    return substrings; 
} 

호출 splitString ("ABCDEFGHI", 3, 4, 2) 생산합니다 : [abc 방송, DEFG, 하이]

+0

감사합니다 !! 완벽하게 작동합니다. – DDas

2

상자에서 작동하는 한 가지 방법은 RegEx입니다. 여기서, 3, 4로 5, 2 스트링의 나머지 부분을 분리하는 예합니다 (mathed 그룹의 첫번째 값이 전체 문자열 I 1부터 시작 이유 그건)이다 : 그러나이

String input = "abcdefghijklmnopqrstuvwxyz"; 
Matcher m = Pattern.compile("^(.{4})(.{3})(.{5})(.{2})(.*)").matcher(input); 
if (m.matches()) { 
    for (int i = 1; i <= m.groupCount(); i++) { 
     System.out.println(m.group(i)); 
    } 
} 

주어진 문자열을 사용하여 간단한을 사용하여 문자열을 분할하는 것보다 훨씬 느립니다. 사용의 편리 성보다는 속도와 품질을 고려해야합니다. https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

+0

답변 해 주셔서 감사합니다. – DDas

관련 문제