글자 찾기

smith_94·2022년 8월 9일
0

글자 찾기

function searchWord(target: string, str: number | string) {
    let searchArr: string[] = [];
    const newStr = str.toString();
    let index = 0;
    let result: string;
    let sliceIndex: number;

    if (target.length < newStr.length) {
        return "Failed";
    }

    for (let letter of target) {
        const regex = new RegExp(/[^0-9a-zA-Z가-힣]/g);
        if (letter === newStr[index]) {
            searchArr.push(letter);
            index++;
        } else if (searchArr.length !== 0 && regex.test(letter)) {
            searchArr.push(letter);
        } else {
            index = 0;
            searchArr = [];
        }

        if (index === newStr.length) {
            break;
        }
    }

    result = searchArr.join('');
    sliceIndex = target.indexOf(result);

    return (
         target.slice(0, sliceIndex) +
        `<span>` +
        target.slice(sliceIndex, sliceIndex + result.length) +
        `</span>` +
        target.slice(sliceIndex + result.length, target.length)
    );
}

const list = [
	"TEST 테%스%트 아이^스아메리#카)노 3,500원@@@",
    "TEST 테%스%트 아@이^스아메리#카노 3,500원@@@",
    "TEST 테%스%트 아이^스아메$리#카(노 3,500원@@@",
    "TEST 테%스%트 아이^스아^메리#카노 3,500원@@@",
    "TEST 테%스%트 아이^스#아메#리카*노 3,500원@@@"
];
const searchResult = [];

for (let item of list) {
    searchResult.push(searchWord(item, 아이스아메리카노));
}

console.log(searchResult);

0개의 댓글