본문 바로가기
Programming_Language/Java

[Java] 문자열 필터는 어떻게? CharAt 와 replace, replaceAll 로 해결하자!

by Cocopop 2024. 1. 26.
반응형



오늘은 문자열 필터를 해보려고 합니다.
개발을 하다보면 데이터 값을 고대로 받는 경우도 있지만, 문제가 있을 법한 기호라던가 문장을 제외 시켜야 하는 경우도 있잖아요??


그럴때는 charAt()와 replace()로 필터해서 수정 할 수 있어요.


1. charAt : 문자열에서 특정 인덱스에 위치한 문자를 반환하는 Java 프로그래밍 언어의 메서드입니다.

예를 들어 "Hello Java" 문자열이 있다고 쳤을 때
4번째 문자를 추출하면 'o'가 출력 될 것이다.



String charDatas = "Hello Java";
String charData = charAt(charDatas(4));

System.out.println("4번째 데이터는 : "+charData);

=============
출력 : o

위와 같이 출력이 될 것이다.
byte 단위로 출력하여 필터하고 싶은 문자를 찾아 수정할 때도 사용되고, 제외 시킬 때도 사용된다.

웹 사이트 작성할 때는 HTML로 인해 <,> 같은 요소를 설정할 때 사용되는 특수기호가 문제가 될 수 있어 HTML ISO-8859-1 Reference Entity Name으로 바꿔주는 경우에 사용된다.




2. replace : 문자열에서 지정된 부분 문자열을 다른 문자열로 대체하는 메서드입니다. 이는 다양한 프로그래밍 언어에서 지원되며, 주로 문자열 조작에 사용됩니다.

replace는 저도 학원에서 자주 썼던 메소드로
자바스크립트 유효성 검사에서도 많이 사용 했을 겁니다.



String charDatas = "Hello Java";

String charfilerData = charDatas.replace("H","^");
System.out.println(charfilerData);

===================
출력 : ^ello Java

위와 같이 출력이 될 겁니다.
해당 문자열에서 "H"가 들어가는 것을 "^"로 모두 바꿔주는 것이지요.

그래서 저는 charAt 보단 replace를 사용해서 주로 많이 사용했는데요.

좀 더 디테일한 작업이 필요할 때는 charAt()를 사용해서 원하는대로 소스를 첨가하면 좀 더 원하는 필터를 만들 수 있을 것 같아요.

그게 아니라면 replace로 간단하게 필터 작업을 해주는 것도 좋겠네요.

하지만!
.
.
.
replace는 단점이 하나 있어요.
replace는 인자 값의 형이 String이 아닌 CharSequence 입니다.
그래서 "H"로 하면 딱 그것만 고쳐주는데요.
만약 더 추가하고 싶으면

chardatas.replace("H","^").replace("l","*");
이러면 코드도 길어지고 지저분해집니다.


그래서 정규식으로 여러개를 필터 할 경우

replaceAll를 사용합니다.


3. replaceAll :  문자열에서 정규 표현식과 일치하는 모든 부분을 다른 문자열로 대체하는 메서드입니다. 일치하는 패턴을 찾아서 모두 대체합니다.

replaceAll은 입력 인자가 String으로 정규 표현식이라고 부르는 형식의 값을 사용할 수 있어요.




String charDatas = "Hello Java";
String charFilterData = replaceAll("[Hl]","^");

System.out.println(charFilterData);

-------------------
출력 :^e^^o Java 

위와 같이 한번에 여러개를 문자를 필터해서 작성할 수 있습니다.

이건 정규식으로 사용할 경우 주로 많이 사용할 것 같고
한 문자만 변경하려고 할 때는 replace로 사용하면 좋을 것 같네요.























300x250