[JAVA] splitMulti 메서드

[JAVA] splitMulti 메서드

새로 만든 유용한 메서드. Split 과 기본적으로 같지만 딜리미터를 여러 개 사용 가능하다. 다른 점이라면 스트링 배열이 아니라 스트링 어레이리스트를 리턴해준다는 것 정도. 아래와 같이 쓰면 된다.

ex) ArrayList<String> inputList = StringUtil.splitMulti(inputText, “\r\n”, “\r”, “\n”, “;”);

———————————————————————-

/**
     * n개의 딜리미터로 split 처리
     *
     * @param fullStr
     * @param delimeters
     * @return
     */
    public static ArrayList<String> splitMulti(String fullStr, String… delimeters) {

        ArrayList<String> resList = new ArrayList<String>();

        if (fullStr == null || fullStr.length() == 0) {
            return null;
        }

        if (delimeters == null) {
            System.out.println(“splitMulti : delimeters are null”);
            return null;
        }

        int deliCount = delimeters.length;
        if (deliCount < 1) {
            System.out.println(“splitMulti : delimeters’ count is 0”);
            return null;
        }

        StringBuffer contentStack = new StringBuffer();

        int fullLen = fullStr.length();
        String oneDeli = “”;

        boolean isDeli = false;

        for (int i = 0; i < fullLen; i++) {
            isDeli = false;

            for (int k = 0; k < deliCount; k++) {
                oneDeli = delimeters[k];
                if (oneDeli == null || oneDeli.length() == 0) {
                    continue;
                }

                if (i + oneDeli.length() > fullLen) {
                    continue;
                }

                if (fullStr.substring(i, i + oneDeli.length()).equals(oneDeli)) {
                    resList.add(contentStack.toString());
                    contentStack.delete(0, contentStack.length());

                    // oneDeli 로 자른다.
                    isDeli = true;
                    break;
                }
            }

            if (!isDeli) {
                contentStack.append(fullStr.substring(i, i + 1));
            }
        }

        if (contentStack.length() > 0) {
            resList.add(contentStack.toString());
        }

        return resList;
    }