본문 바로가기

국비교육/국비교육 복습

day14_api.lang.String_Test06 : .repeat(int count), .replace(CharSequence target, CharSequence replacement) (★)

(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);
	}
}