프로그래머스 특정 문자 제거하기 자바스크립트 | String.prototype.split() | Array.prototype.join() | replaceAll()

Chaeyeon Lee·2023년 5월 19일
0

🔅 1. 아이디어

slice를 이용해도 되나? 싶어서 방법을 찾아봤는데, split이라는 게 있었다.

🧑‍💻 2. 내 코드

function solution(my_string, letter) {
    let answer=my_string.split(letter).join('');
    return answer;
}

🐣 3. 개념

📌 String.prototype.split()

위 메서드는 String 객체를 지정한 구분자로 여러 개의 문자열로 나누고 배열로 저장. 원본 문자열은 건들지 않는 모양?

split()
split(separator)
split(separator, limit)

separator(opt): 원본 문자열을 끊어야 할 부분을 나타내는 문자열. 정규표현식도 가능하다. 만약 문자열 유형의 separator가 두 글자 이상일 경우 그 부분 문자열 전체가 일치해야 끊어진다. 생략되거나 str에 등장하지 않는다면 반환되는 배열은 원본 문자열 그대로 반환한다. 만약 separator가 빈 문자열이면, str의 각각의 문자가 배열의 원소 하나씩으로 변환된다.
limit(opt): 끊어진 문자열의 최대 개수를 나타내는 정수. separator가 등장할 때마다 문자열을 끊지만, 배열의 원소가 limit개가 되면 멈춘다. 만약 limit에 도달하기 전에 문자열 끝까지 탐색이 완료되는 경우도 있다.

const str = 'The quick brown fox jumps over the lazy dog.';

const words = str.split(' '); //공백 기준으로 끊기=단어별로 잘라서 배열에 담기
console.log(words[3]);
// Expected output: "fox"
console.log(str); //원본 문자열엔 변함 없다
// "The quick brown fox jumps over the lazy dog."
console.log(words);
//Array ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

const chars = str.split(''); //글자별로 잘라서 배열에 담기
console.log(chars[8]);
// Expected output: "k"
console.log(chars[3]);
// Expected output: " " 

const strCopy = str.split(); //separator설정하지 않은 경우 해당 문자열을 배열 원소로 갖는다!
console.log(strCopy);
// Expected output: Array ["The quick brown fox jumps over the lazy dog."]

const nofox=str.split('fox'); //fox라는 단어가 없어지고, 이를 기준으로 나뉜 문자열이 배열에 저장된다!
console.log(nofox);
//Array ["The quick brown ", " jumps over the lazy dog."]

const noR=str.split('r'); //r이라는 글자가 없어지고, 이를 기준으로 나뉜 문자열이 배열에 저장된다!
console.log(noR);
//Array ["The quick b", "own fox jumps ove", " the lazy dog."]

const myString = ''; //빈 문자열이 주어졌을 경우
const splits = myString.split();

console.log(splits); //빈 배열이 아니라, 빈 문자열을 포함한 배열을 반환한다. 

// [""]

var myString = 'Hello World. How are you doing?';
var splits = myString.split(' ', 3);

console.log(splits);
//["Hello", "World.", "How"]


📌 Array.prototype.join()

위 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.

arr.join([separator])

separator(opt): 배열의 각 요소를 구분할 문자열 지정. 이 구분자는 필요한 경우 문자열로 변환된다. 생략하면 배열의 요소들이 쉼표로 구분된다! 만약 구분자가 빈 문자열이면, 모든 요소들 사이에 아무 문자 없이 연결된다.
반환값은 배열의 모든 요소를 연결한 하나의 문자열. 만약 arr.length가 0이면 빈 문자열 반환

const elements = ['Fire', 'Air', 'Water'];

console.log(elements.join()); //separator가 없을 때에는 배열을 구분하는 쉼표까지 문자열에 포함된다.
// Expected output: "Fire,Air,Water" 

console.log(elements.join(''));
// Expected output: "FireAirWater"

console.log(elements.join('-'));
// Expected output: "Fire-Air-Water"

그니까, separator는 배열들을 하나로 연결할 때에, 어떻게 연결해줄지 설정하는 옵션과 같다.


다른 사람의 풀이를 보는 중에 획기적인 놈 발견;;

📌 String.prototype.replaceAll()

위 메서드는 pattern의 모든 일치 항목이 replacement로 대체된 새 문자열을 반환한다. pattern은 문자열 또는 정규식일 수 있고, replacement는 각 일치 항목에 대해 호출되는 문자열 또는 함수일 수 있다고 한다. 원래 문자열은 변경 안 됨!!

function solution(my_string, letter) {
    return my_string.replaceAll(letter, "");
}
replaceAll(pattern, replacement)

ex)

"aabbcc".replaceAll("b", ".");
// 'aa..cc'
"aabbcc".replaceAll(/b/g, ".");
//"aa..cc";


출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/split
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/join
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

profile
프론트엔드 개발자 지망생

0개의 댓글