munifico.github.io

munifico's anything page

Follow me on GitHub

부분 문자열 검색과 대체

정규식으로 하는 일은 결국 문자열 속에서 부분 문자열을 찾는 일이며 찾은 부분을 교체할 때도 있습니다. 정규식이 제공하는 기능은 대단히 유연하고 강력하지만 그 만큼 방대합니다. 따라서 본격적으로 시작하기 전에, 정규식을 쓰지 않고 검색하고 교체하는 방법을 간단히 살펴봅시다. String.prototype 메서드의 검색과 교체 기능에는 한계가 있지만, 그 한계 안에서는 충분히 쓸만합니다.

큰 문자열 안에 원하는 부분 문자열이 존재하는지 찾기만 하면 될 때는 다음 String.prototype 메서드로 충분합니다.

const input = 'As I was going to Saint Ives';
input.startstWith("As")                 // true
input.endsWith("Ives")                  // true
input.startsWith("going", 9)            // true -- 인덱스 9에서 시작합니다.
input.endsWith("going", 14)             // true -- 인덱스 14를 문자열의 끝으로 간주합니다.
input.includes("going")                 // true
input.includes("going", 10)             // false -- 인덱스 10에서 시작하면 going이 없습니다.
input.indexOf("going")                  // 9
input.indexOf("going", 10)              // -1
input.indexOf("nope")                   // -1

이들 메서드는 모두 대소문자를 구분합니다. 따라서 input.startsWith(“as”)는 false 입니다. 대소문자를 구분하지 않고 비교하려면 소문자로 바꿔서 비교하면 됩니다.

input.toLowerCase().startsWith('as');           // true

String.prototype.toLowerCase는 원래 문자열은 그대로 두고 새 문자열을 반환합니다. 자바스크립트의 문자열은 항상 불변입니다.

한 단계 더 나가서 부분 문자열을 찾아 교체하려면 String.prototype.replace를 사용합니다.

const input = 'As I was going to Saint Ives';
const output = input.replace('going', 'walking');

다시 말하지만, 원래 문자열 input은 바뀌지 않습니다. going을 walking으로 교체한 새 문자열은 output에 할당됩니다. 물론 input을 바꾸고 싶다면 새 문자열을 input에 할당하면 됩니다.


이전 : 정규표현식
다음 : 정규식 만들기
목차