(Q) 욕설 필터링 프로그램
사용자에게 입력받은 문자열 중에서 욕설에 해당하는 단어를 블라인드(***) 처리하도록 구현
//문자열을 띄어쓰기까지 입력받는 명령
String text = sc.nextLine();
실제 욕 대신 욕같은 단어로 대체합니다
신발, 수박, 시베리아, 십장생, 개나리, 주옥, 조카, 시방, 된장, 십자수
- 블라인드 처리 시 별 개수는 3개로 고정합니다
(추가)
- 필터링 할 때 별 개수(*)를 필터링되는 단어 글자 수와 맞추세요
필터링 프로그램 메인 메소드
package day14_api.lang.String;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
// 입력
String text = "신발2수박3시베리아333이이잉44시방";
// 필터링 대상의 배열
String[] data = new String[] {
"신발", "수박", "시베리아", "십장생", "개나리", "주옥", "조카", "시방", "된장", "십자수"
};
// 필터링
for(int i = 0 ; i < data.length ; i ++) { // i번째 배열의 욕설이 포함되어있는지 확인
if(text.contains(data[i])) { // 만약 i번째 배열의 욕설이 포함되어 있다면
text = text.replace(data[i], "***");
// text 문자열에서 해당 욕설을 ***로 바꾸고
// 바뀐 text 문자열을 기존 text 문자열에 덮어쓰기 한다
}
}
// 출력
System.out.println(text);
}
}
(추가) 욕설의 글자수만큼 별(*)을 출력
package day14_api.lang.String;
public class Test06_1 {
public static void main(String[] args) {
// 입력
String text = "신발2수박3시베리아333이이잉44시방";
// 필터링 대상의 배열
String[] data = new String[] { "신발", "수박", "시베리아", "십장생", "개나리", "주옥", "조카", "시방", "된장", "십자수" };
// 필터링
for (int i = 0; i < data.length; i++) { // i번째 배열의 욕설이 포함되어있는지 확인
if (text.contains(data[i])) { // 만약 i번째 배열의 욕설이 포함되어 있다면
String star = "*"; // 필터링용 별(*) 문자열 선언
String filtering = star.repeat(data[i].length()); // 욕설의 길이만큼 별(*) 반복
text = text.replace(data[i], filtering);
// text 문자열에서 해당 욕설을 ***로 바꾸고
// 바뀐 text 문자열을 기존 text 문자열에 덮어쓰기 한다
}
}
// 출력
System.out.println(text);
}
}
.repeat(int count)
- count 숫자만큼 문자열을 반복
변수명.repeat(반복횟수)
.replace(CharSequence target, CharSequence replacement)
- target 위치의 문자열을 replace 위치의 문자열로 치환한다
변수명.replace(대상 문자열, 치환 문자열)
*** star 변수를 선언하지 않고도 .repeat(int count)를 호출할 수 있다
package day14_api.lang.String;
public class Test06_1 {
public static void main(String[] args) {
// 입력
String text = "신발2수박3시베리아333이이잉44시방";
// 필터링 대상의 배열
String[] data = new String[] { "신발", "수박", "시베리아", "십장생", "개나리", "주옥", "조카", "시방", "된장", "십자수" };
// 필터링
for (int i = 0; i < data.length; i++) { // i번째 배열의 욕설이 포함되어있는지 확인
if (text.contains(data[i])) { // 만약 i번째 배열의 욕설이 포함되어 있다면
text = text.replace(data[i], "*".repeat(data[i].length()));
// text 문자열에서 해당 욕설을 ***로 바꾸고
// 바뀐 text 문자열을 기존 text 문자열에 덮어쓰기 한다
}
}
// 출력
System.out.println(text);
}
}