HOWTO · JavaScript

JavaScript의 문자열에서 문자 제거

JavaScript의 문자열에서 문자를 제거하는 다양한 방법을 보여줍니다.

이 페이지의 내용

JavaScript 문자열은 불변이므로 문자를 제거하면 새 문자열이 만들어져 반환되고 원래 값은 그대로 유지됩니다. 문자를 식별하는 방법에 따라 연산을 선택하세요. 전역 정규식은 일치하는 문자를 모두 제거하고, slice()는 지정한 위치의 문자 하나를 제거하며, 문자열과 함께 사용하는 replace()는 첫 번째 일치 항목만 제거합니다. 예제에서는 DelftStack을 사용합니다. 문자 t가 두 번 나오므로 각 방법의 차이를 쉽게 확인할 수 있습니다.

전역 정규식으로 일치하는 문자 모두 제거

모든 항목을 제거하려면 g 플래그가 있는 정규식을 replace()에 전달하세요. g가 없으면 정규식은 첫 번째 일치 항목만 바꿉니다. 대체 문자열 ''은 아무 문자도 추가하지 않습니다. replace()는 원래 문자열을 수정하지 않으므로 결과는 새 변수에 저장합니다.

일치하는 t를 모두 제거하려면 다음 예제를 실행하세요. 코드의 영문 식별자와 출력은 원래 바이트 그대로 유지됩니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

const original = "DelftStack";
const result = original.replace(/t/g, "");
console.log(result);
DelfSack

이 리터럴 패턴은 어떤 문자를 찾을지 미리 알고 있을 때 적합합니다. 사용자 입력으로 패턴을 만든다면 RegExp를 생성하기 전에 정규식 메타문자를 이스케이프하세요. 그렇지 않으면 .이나 * 같은 문자가 그대로 일치하는 대신 연산자로 동작합니다. 고정된 문자는 정규식 문자 클래스로 표현할 수도 있지만, 문자 클래스 안에서 특별한 의미를 갖는 문자는 이스케이프해야 합니다.

알려진 인덱스의 문자 하나를 slice()로 제거

JavaScript 문자열의 인덱스는 0부터 시작합니다. DelftStack에서 t의 인덱스는 4이므로 해당 인덱스 앞부분과 문자 뒤쪽을 이어 붙이면 됩니다. slice()는 원본 문자열을 변경하지 않고 각 부분을 반환합니다. 이는 위치를 기준으로 제거하는 방법입니다. 인덱스가 유효하면 찾으려던 문자와 일치하는지 여부와 관계없이 그 위치의 문자를 제거합니다. 일치 여부도 중요하다면 먼저 text[index]를 확인하세요. 한국어 API 대상 경로는 제공된 인벤토리에 없어 링크는 영어 페이지를 가리킵니다.

인덱스 4의 문자를 제거하려면 다음 예제를 실행하세요. 코드의 영문 식별자와 출력은 원래 바이트 그대로 유지됩니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

const original = "DelftStack";
const index = 4;
const result = original.slice(0, index) + original.slice(index + 1);
console.log(result);
DelfStack

재사용할 함수를 만들 때는 두 조각을 이어 붙이기 전에 인덱스가 0부터 text.length - 1까지의 정수인지 확인하세요. 이 식에서는 문자열 길이와 같거나 더 큰 인덱스를 사용하면 문자열이 그대로 유지됩니다. 음수 인덱스는 slice()에서 다르게 처리되어 문자열 뒤쪽의 텍스트를 제거할 수 있습니다. 따라서 범위를 벗어난 모든 값이 아무 동작도 하지 않는다고 가정하지 말고 인덱스의 유효성을 검사하세요. JavaScript 문자열 인덱싱은 UTF-16 코드 단위를 기준으로 하므로 서로게이트 쌍으로 표현되는 기호 하나가 두 인덱스를 차지할 수 있습니다.

첫 번째로 일치하는 문자만 replace()로 제거

검색 값이 문자열이면 replace()는 첫 번째 일치 항목만 제거합니다. 첫 번째 일치 항목을 제거하려는 경우 간단한 방법입니다. 전역 정규식 예제와 비교해 보세요. 첫 번째 t는 사라지고 뒤에 있는 t는 남습니다. 일치하는 항목을 모두 제거하려면 대신 g 플래그가 있는 정규식을 사용하세요.

첫 번째로 일치하는 t만 제거하려면 다음 예제를 실행하세요. 코드의 영문 식별자와 출력은 원래 바이트 그대로 유지됩니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

const original = "DelftStack";
const result = original.replace("t", "");
console.log(result);
DelfStack

이 방법들은 문자열을 반환하므로 결과를 저장하거나 다른 함수에 전달하거나 let으로 선언한 변수에 다시 할당할 수 있습니다. const 바인딩에 담긴 문자열 자체는 바뀌지 않습니다. const는 변수에 다른 값을 다시 할당하는 일을 막고, 문자열 값은 그 자체로 불변입니다. 여러 번 변환할 때는 일치 규칙이 가장 명확한 방법을 고른 다음 반환된 값을 다음 작업의 입력으로 사용하세요. replace() 같은 검색 기반 방법은 검색 값이 없으면 텍스트를 그대로 둡니다. 인덱스 기반 제거는 위치를 따르며 인덱스가 유효하면 그 위치의 문자를 제거합니다.