sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

import java.util.StringTokenizer;

 

public class StringUtils {

 

    /**

     * String 클래스의 replaceAll 개량 함수<br/>

     * replacement 인자에 역슬래쉬(\)와 달러($)문자를 인식할 수 있도록 한다.<br/>

     * 주의) 단일 특수문자 입력은 불가 -> (ex> "\")

     * @param sourceDoc 입력문서

     * @param regex 대상이 될 문자열 정규표현식

     * @param replacement 대체할 문자열

     * @param useDoubleQuotation '"' 문자도 고려할지 여부

     * @return 결과물

     */

    public static String replaceAll(String sourceDoc, String regex, String replacement, boolean useDoubleQuotation) {

 

        if (sourceDoc == null) {

            return sourceDoc;

        }

        

        StringBuffer newReplacement = new StringBuffer();

        char[] replaceChar = replacement.toCharArray();

        for (int i = 0; i < replaceChar.length; i++) {

            

            if (replaceChar[i] == '\\' || replaceChar[i] == '$') {

                newReplacement.append('\\');

            } else if(replaceChar[i] == '"' && useDoubleQuotation) {

                newReplacement.append('\\');

                newReplacement.append('\\');

            }

            

            newReplacement.append(replaceChar[i]);

            

        }

 

        String rtnValue = sourceDoc.replaceAll(regex, newReplacement.toString());

        return rtnValue;

    }

    

    /**

     * source 내의 모든 escape sequence를 문자열로 변환한다.

     * @param source

     * @return 결과물

     */

    public static String replaceEscapeSequence(String source) {

        

        if (source == null) {

            return source;

        }

        

        StringBuffer newSource = new StringBuffer();

        char[] sourceChar = source.toCharArray();

        int length = sourceChar.length;

        for (int i = 0; i < length; i++) {

            

            if (sourceChar[i] == '\r') { //Carridge Return

                newSource.append('\\');

                newSource.append('r');

                continue;

            } else if (sourceChar[i] == '\n') { //New Line

                newSource.append('\\');

                newSource.append('n');

                continue;

            } else if (sourceChar[i] == '\t') { //Tab

                newSource.append('\\');

                newSource.append('t');

                continue;

            } else if (sourceChar[i] == '\b') { //Back Space

                newSource.append('\\');

                newSource.append('b');

                continue;

            } else if (sourceChar[i] == '\f') { //Form Feed

                newSource.append('\\');

                newSource.append('f');

                continue;

            } else if (sourceChar[i] == '\\') { //Back Slash

                newSource.append('\\');

                newSource.append('\\');

                    continue;

            } else if (sourceChar[i] == '\"') { //Double Quotation

                newSource.append('\\');

                newSource.append('\"');

                    continue;

            }

            

            newSource.append(sourceChar[i]);

        }

 

        return newSource.toString();

    }

    

    /**

     * 수치형 문자열인지 검사

     * @param num

     * @return 수치형 문자열이면 true

     */

    public static boolean isNumber(String num) {

        return num == null ? false : num.matches("[0-9.]+");

    }

    

    /**

     * 공백이 아닌 첫번째 단어를 추출한다.

     * @param str

     * @return 추출된 단어

     */

    public static String getFirst(String str) {

        String[] strArr = str.trim().split("\\p{Space}");

        return strArr[0];

    }

    

    /**

     * 입력된 문자열 내의 모든 스페이스를 제거하여 리턴

     * @param str

     * @return

     */

    public static String removeAllWhiteSpace(String str) {

        

        StringTokenizer st = new StringTokenizer(str.trim());

        StringBuilder sb = new StringBuilder();

        while (st.hasMoreTokens()) {

            sb.append(st.nextToken());

        }

        return sb.toString();

    }

    

    /**

     * 문서내에서 특정 문자열을 제거한다

     * @param doc 문서

     * @param word 특정 문자열

     * @return 제거된 결과 문서

     */

    public static String removeSpecificWord(String doc, String word) {

        StringBuffer parseRst = null;

        int keysIdx = doc.indexOf(word);

        if (keysIdx > -1) {

            parseRst = new StringBuffer();

            if (keysIdx != 0) {

                parseRst.append(doc.substring(0, keysIdx));

            }

            parseRst.append(doc.substring(keysIdx + word.length()));

            doc = parseRst.toString();

        }

        return parseRst == null ? null : parseRst.toString().trim();

    }

 

    private StringUtils() {

        ;

    }

}

번호 제목 글쓴이 날짜 조회 수
283 수치 데이터 처리 유틸리티 file 황제낙엽 2019.05.12 1929
282 한글 초성 중성 종성 분리 유틸리티(자작) file 황제낙엽 2019.05.07 539
281 한글 초성 중성 종성 분리 (자모분리) 황제낙엽 2019.05.07 475
280 한글 인코딩의 이해 1편: 한글 인코딩의 역사와 유니코드 황제낙엽 2019.05.07 513
279 한글 인코딩의 이해 2편: 유니코드와 Java를 이용한 한글 처리 file 황제낙엽 2019.05.07 521
278 응답 헤더의 Content-disposition 속성 황제낙엽 2019.04.16 833
» StringUtils - 문자열 처리 유틸리티 file 황제낙엽 2019.04.15 531
276 JSON과 GSON 황제낙엽 2019.03.24 612
275 File.length() 에 대하여 황제낙엽 2019.03.24 539
274 File.delete() 와 File.deleteOnExit() 황제낙엽 2019.03.24 2614
273 List to Array / Array to List 황제낙엽 2019.03.24 424
272 Oracle JAVA 유료화에 관련한 최신 기사 황제낙엽 2019.01.23 488
271 [HttpURLConnection, HttpsURLConnection] 코드참조용 샘플프로젝트 secret 황제낙엽 2019.01.18 0
270 Iterator.next() - NoSuchElementException 황제낙엽 2018.10.28 648
269 OracleJDK 유료화 FAQ (Oracle Java 의 유료화에 대한 어느분의 정리) 황제낙엽 2018.10.11 505
268 메일서버(daum.net)에 POP3를 이용하여 메일 가져오기 예제 file 황제낙엽 2018.10.09 1331
267 Sending mail through Java using SMTP of gmail file 황제낙엽 2018.09.13 894
266 Read or get mails using pop in java (using gmail) file 황제낙엽 2018.09.13 11679
265 Collections.sort() , Comparator 황제낙엽 2018.08.23 571
264 JavaMail - Connecting Gmail pop3 server. 황제낙엽 2018.08.20 792