Responsive Advertisement

JavaScript String Search: ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•๊ณผ ํ™œ์šฉ๋ฒ•

JavaScript์—์„œ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๋‹ค์–‘ํ•˜๋ฉฐ, ํŠน์ • ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŠน์ • ํŒจํ„ด์„ ์ฐพ๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ์™€ ์ •๊ทœ ํ‘œํ˜„์‹ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” JavaScript ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

JavaScript ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ฉ”์„œ๋“œ

1. indexOf(): ๋ฌธ์ž์—ด์˜ ์œ„์น˜ ์ฐพ๊ธฐ

indexOf() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์ด ์ฒ˜์Œ์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ฐพ๋Š” ๋ฌธ์ž์—ด์ด ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let text = "JavaScript is amazing!";
let position = text.indexOf("amazing");
console.log(position);  // ๊ฒฐ๊ณผ: 13

์œ„ ์ฝ”๋“œ์—์„œ๋Š” "amazing"์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ฌธ์ž์—ด์˜ 13๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ฐพ๋Š” ๋ฌธ์ž์—ด์ด ์—†์„ ๊ฒฝ์šฐ, -1์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

2. lastIndexOf(): ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์œ„์น˜ ์ฐพ๊ธฐ

lastIndexOf()๋Š” ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let text = "I love JavaScript, I love coding!";
let lastPosition = text.lastIndexOf("love");
console.log(lastPosition);  // ๊ฒฐ๊ณผ: 23

์ด ์˜ˆ์ œ์—์„œ๋Š” "love"๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ 23๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

3. search(): ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰

search() ๋ฉ”์„œ๋“œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŠน์ • ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. indexOf()์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

let text = "JavaScript is fun!";
let position = text.search(/fun/);
console.log(position);  // ๊ฒฐ๊ณผ: 13

์œ„ ์ฝ”๋“œ์—์„œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹ /fun/์„ ์‚ฌ์šฉํ•ด "fun"์ด๋ผ๋Š” ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ 13์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

1. includes(): ๋ฌธ์ž์—ด ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

includes() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์— ํŠน์ • ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ true ๋˜๋Š” false๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let text = "I enjoy learning JavaScript!";
console.log(text.includes("JavaScript"));  // ๊ฒฐ๊ณผ: true
console.log(text.includes("Python"));  // ๊ฒฐ๊ณผ: false

includes() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์ด ํŠน์ • ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. startsWith()์™€ endsWith(): ์‹œ์ž‘๊ณผ ๋ ํ™•์ธ

startsWith() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์ด ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , endsWith()๋Š” ๋ฌธ์ž์—ด์ด ํŠน์ • ๋ฌธ์ž๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

let text = "JavaScript is powerful!";
console.log(text.startsWith("Java"));  // ๊ฒฐ๊ณผ: true
console.log(text.endsWith("powerful!"));  // ๊ฒฐ๊ณผ: true

์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๋ฌธ์ž์—ด์ด "Java"๋กœ ์‹œ์ž‘ํ•˜๊ณ  "powerful!"๋กœ ๋๋‚˜๋Š”์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰

JavaScript์—์„œ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ •๊ทœ ํ‘œํ˜„์‹(Regular Expressions)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์€ ํŒจํ„ด ๋งค์นญ์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ, ๋ณต์žกํ•œ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์ด๋‚˜ ํŠน์ • ํŒจํ„ด์— ์ผ์น˜ํ•˜๋Š” ํ…์ŠคํŠธ๋ฅผ ์ฐพ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

1. match(): ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

match() ๋ฉ”์„œ๋“œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์— ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—†์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let text = "I love JavaScript and Java!";
let result = text.match(/Java/g);
console.log(result);  // ๊ฒฐ๊ณผ: ["Java", "Java"]

์œ„ ์ฝ”๋“œ์—์„œ ์ •๊ทœ ํ‘œํ˜„์‹ /Java/g๋Š” ๋ฌธ์ž์—ด ๋‚ด์—์„œ "Java"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋ชจ๋‘ ์ฐพ์•„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ g ํ”Œ๋ž˜๊ทธ๋Š” ๊ธ€๋กœ๋ฒŒ ๊ฒ€์ƒ‰์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ „์ฒด ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

2. replace()์™€ ์ •๊ทœ ํ‘œํ˜„์‹

replace() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•˜๋ฉด ๋”์šฑ ์ •๊ตํ•œ ๋Œ€์ฒด ์ž‘์—…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

let text = "JavaScript is awesome. JavaScript is fun!";
let newText = text.replace(/JavaScript/g, "JS");
console.log(newText);  // ๊ฒฐ๊ณผ: "JS is awesome. JS is fun!"

์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๋ฌธ์ž์—ด ๋‚ด์˜ "JavaScript"๋ฅผ ๋ชจ๋‘ "JS"๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹ /JavaScript/g๋Š” ๋ฌธ์ž์—ด์—์„œ ๋ชจ๋“  "JavaScript"๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

์‘์šฉ ์˜ˆ์ œ: ํŠน์ • ๋‹จ์–ด ํฌํ•จ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ

์•„๋ž˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์—์„œ ํŠน์ • ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

function checkWord(input, word) {
    if (input.includes(word)) {
        console.log(`"${word}"๊ฐ€ ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.`);
    } else {
        console.log(`"${word}"๊ฐ€ ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.`);
    }
}

let userInput = "I am learning JavaScript.";
checkWord(userInput, "JavaScript");  // ๊ฒฐ๊ณผ: "JavaScript๊ฐ€ ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
checkWord(userInput, "Python");  // ๊ฒฐ๊ณผ: "Python๊ฐ€ ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

์œ„ ์ฝ”๋“œ์—์„œ๋Š” includes() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์— ํŠน์ • ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

JavaScript๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ์™€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. indexOf()์™€ search()๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ๊ฑฐ๋‚˜, includes()์™€ startsWith()๋กœ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์—ˆ๋Š”์ง€๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ํŒจํ„ด ๋งค์นญ๋„ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•๋“ค์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด, ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ์“ฐ๊ธฐ