java 언어는 문자열 치환의 다양한 메소드를 제공하고 있습니다.


java의 replace 함수에 대해 알아봅시다.




기본적인  replace함수입니다.

설명 : replace("찿을문자열" ,"바꿀문자열")


ex)


String s="판도리카야 안녕";

String s2=s.replace("판도리카야", "정희");


System.out.println(s2);


결과는  : "정희 안녕"


처음나오는 단어를 찿아서 바꾸어주는 함수입니다.

설명 : replaceFirst("찿을문자열" ,"바꿀문자열")


ex)


String s="예선이가 판도리카에게 나 시험 예선 통과했어라고 말했다";


String s2=s.replaceFirst("예선","은영");


System.out.println(s2);


결과는  : "은영이가 판도리카에게 나 시험 예선 통과했어라고 말했다";


모든 문자를 찿아서 바꾸어주눈  함수입니다.

설명 : replaceAll("찿을문자열" ,"바꿀문자열")


ex)


String s="예선이가 판도리카에게 나 시험 예선 통과했어라고 말했다";


String s2=s.replaceAll("예선","은영");


System.out.println(s2);


결과는  : "은영이가 판도리카에게 나 시험 은영 통과했어라고 말했다"



마지막 문자열을 찿아서 바꾸어주는 함수이다.

java api에서 기본으로 제공하지 않아서 만들어봤습니다. 

private static String replaceLast(String string, String toReplace, String replacement) {    

   int pos = string.lastIndexOf(toReplace);     

   if (pos > -1) {        

   return string.substring(0, pos)+ replacement + string.substring(pos +   toReplace.length(), string.length());     

   } else { 

return string;     

   } 



ex)

String s="내가  사랑 하고 보고싶다는게 진짜사랑인거같아";


String s2=replaceLast(s, "사랑, "미워");


System.out.println(s2);


결과는  :"내가 사랑하고  보고싶다는게 진짜미워인거같아";




 Java 1.4 까지는 String Class에는


String replace(char oldChar, char newChar)

String replaceAll(String regex, String replacement)

메소드만 있었습니다.


메소드 원형에서 보듯이 replace 는 기본적으로 1글자만 대상으로 선택해서 replace 할 수 있었고

replaceAll는 여러 문자를 바꿀 수 있었습니다.

ex)

String str = "abc";

str.replace('a','z');   // 결과 "zbc"

str.replaceAll("bc", "zzz");  // 결과 "azzz"


그러나 replace 기능의 1글자 변경이 기능이 부족하여

Java 1.5 부터는 String Class에

String replace(CharSequence target, CharSequence replacement)

가 추가로 생겨 replace 를 여러 글자로도 가능하게 되었습니다.


그렇다면 Java 1.5의 str.replace("bc","zzz") 와 str.replaceAll("bc","zzz") 는 무슨차이가

있냐하면 예제의 상황에서는 동일한 결과가 나옵니다.


그러나 replaceAll 의 첫번째 인자는 단순한 string 이 아니라 regex 를 받는데

이는 다양한 regular expression 을 쓸수 있음을 의미합니다.

str.replace("a.?c","zz");  // 결과 "abc". 변화가 없음

str.replaceAll("a.?c","zz");  // 결과 "zz". '.?' 이 특수한 의미로 해석됨.


자세한 설명은 javadoc 문서를 참고하시기 바랍니다.

이미지 내용String (Java 2 Platform SE 5.0)java.sun.com


replaceAll에서 쓰일수있는 regex 의 표현법은

이미지 내용Pattern (Java 2 Platform SE 5.0)java.sun.com

을 참고하시기 바랍니다.

'이전것 > JAVA' 카테고리의 다른 글

java 프로그램 실행시간 측정  (0) 2017.01.20
JAVA HTML 태그 또는 모든 태그 형식 제거  (0) 2017.01.16
Socket으로 부터 읽고/쓰는 방법  (0) 2016.12.30
3) 프로그램 만들기  (0) 2016.12.26
2) 클래스와 객체  (0) 2016.12.26
블로그 이미지

잉비니

,