removeUrlAnchor.js (7kyu 78)

Codewars 알고리즘 풀이


Problem

  • Complete the function so that it returns the url with anything after the anchor (#) removed.
    • anchor(#)를 제거하고, url을 반환한다.


Solution 01

function removeUrlAnchor(url) {
  let result = '';
  
  for (let i = 0; i < url.length; i++) {
    if (url[i] === '#') return result;
    
    result += url[i];
  }
  return result;
}

removeUrlAnchor('dubbsong.github.io');        // dubbsong.github.io
removeUrlAnchor('dubbsong.github.io#about');  // dubbsong.github.io


Solution 02

function removeUrlAnchor(url) {
  return url.split('#')[0];
}

removeUrlAnchor('dubbsong.github.io');        // dubbsong.github.io
removeUrlAnchor('dubbsong.github.io#about');  // dubbsong.github.io

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.


Solution 03

function removeUrlAnchor(url) {
  return url.replace(/#.*/gi, '');
}

removeUrlAnchor('dubbsong.github.io');        // dubbsong.github.io
removeUrlAnchor('dubbsong.github.io#about');  // dubbsong.github.io

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

.: 개행 문자를 제외한 모든 문자와 대응

*: 0회 이상 연속으로 반복되는 부분과 대응

g: 전역 검색

i: 대소문자 구분 없는 검색


Solution 04

function removeUrlAnchor(url) {
  return url.replace(/#.+$/, '');
}

removeUrlAnchor('dubbsong.github.io');        // dubbsong.github.io
removeUrlAnchor('dubbsong.github.io#about');  // dubbsong.github.io

+: 1회 이상 연속으로 반복되는 부분에 대응

$: 입력의 끝 부분에 대응