java replace last 구현하기

2017.02.08 10:34language/java

java replace last 구현하기

 

java 에서 replace는 익히 많이 사용하는 String 함수 중 하나이다.

 

특정 문자열에서 단어나 문자 등을 찾아서 바꿔주는 치환함수이다.

 

replace 함수는 다음과 같이 분류된다.

 

 

String  replace (char oldChar, char newChar) 
String  replace (CharSequence  target, CharSequence  replacement) 
String  replaceAll (String  regex, String  replacement)
String  replaceFirst (String  regex, String  replacement)

 

 

replace 함수에 대해서는 기본적으로 모두 알고 있을꺼라는 생각에 자세한 설명은 생략.

 



 

내가 필요한 것은 마지막에 나오는 특정 문자(문자열)을 찾아서 치환하고 싶다.

 

String replace 함수들을 보면 내가 원하는 것은 없다.

 

마지막에 나오는 특정 문자열을 바꾸는 방법은 구현하기 나름이니 엄청나게 많을 것이다.

 

그 중 3가지 정도를 소개하려 한다.

 

간단하니 자세한 설명은 역시 생략함.

 

 

1. 특정 문자열을 기준으로 자르고 이어 붙이는 방법

특정 문자열의 마지막 위치를 기준으로 앞으로 자르고

뒤로는 특정 문자열 마지막 위치+특정 문자열 length 부터 끝까지 자르고

치환할 문자열을 그 사이에 이어 붙힌다.

1
2
3
4
5
6
7
8
    public static String replaceLast(String str, String regex, String replacement) {
        int regexIndexOf = str.lastIndexOf(regex);
        if(regexIndexOf == -1){
            return str;
        }else{
            return str.substring(0, regexIndexOf) + replacement + str.substring(regexIndexOf + regex.length());
        }
    }
cs

 

 

2. 특정 문자열을 기준으로 앞 뒤로 자르고 뒷 문자열에 대해서만 replace 하는 방법

특정 문자열의 마지막 위치를 기준으로 앞으로 자르고

뒤로는 특정 문자열 마지막 위치부터 끝까지 자르고

뒤에 자른 문자열에 대해 replace 한다.

1
2
3
4
5
6
7
8
    public static String replaceLast(String str, String regex, String replacement) {
        int regexIndexOf = str.lastIndexOf(regex);
        if(regexIndexOf == -1){
            return str;
        }else{
            return str.substring(0, regexIndexOf) + str.substring(regexIndexOf).replace(regex, replacement);
        }
    }
cs

 

 

3. 정규식을 이용한 방법

정규식을 이용해서 마지막 문자를 치환함 (Stack Overflow 참고)

1
2
3
    public static String replaceLast(String text, String regex, String replacement) {
        return text.replaceFirst("(?s)(.*)" + regex, "$1" + replacement);
    }
cs

 



* 사용방법 !

 

* 결과 !

 

 

끝 !