URL 문자열에서 호스트 이름 추출하기
JavaScript에서 URL 문자열로부터 호스트 이름(hostname)을 추출하려면 split() 함수를 활용할 수 있습니다. split()은 문자열을 지정한 구분자를 기준으로 나누어 배열로 반환하는 메서드이며, 이를 이용해 프로토콜, 포트, 경로 등 불필요한 부분을 제거하고 순수한 호스트 이름만 얻을 수 있습니다.
아래 예제 코드는 URL에 프로토콜(예: https://)이 포함되어 있는지 확인한 후, 적절한 위치의 값을 추출하고 포트 번호(:)나 쿼리 문자열(?)까지 제거하여 최종적으로 호스트 이름만 반환합니다.
예제 코드
function gettingTheHostNameFromURL(websiteURL) {
var getTheHostName;
// URL에 '//'가 있으면 프로토콜이 포함된 경우이므로 세 번째 요소를 가져옴
if (websiteURL.indexOf("//") > -1) {
getTheHostName = websiteURL.split('/')[2];
} else {
// '//'가 없으면 첫 번째 요소가 곧 호스트 이름
getTheHostName = websiteURL.split('/')[0];
}
getTheHostName = getTheHostName.split(':')[0];
getTheHostName = getTheHostName.split('?')[0];
return getTheHostName;
}
var websiteURL="https://www.tutorialspoint.com/java/index.htm";
var websiteURL1="https://www.tutorix.com/about_us.htm";
var websiteURL2="https://www.tutorialspoint.com/execute_python_online.php";
console.log(gettingTheHostNameFromURL(websiteURL))
console.log(gettingTheHostNameFromURL(websiteURL1))
console.log(gettingTheHostNameFromURL(websiteURL2))실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node 파일명.js
실행 결과
여기서는 파일명을 demo161.js로 저장했습니다. 프로그램을 실행하면 아래와 같은 결과가 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo161.js www.tutorialspoint.com www.tutorix.com www.tutorialspoint.com
동작 원리 정리
- 프로토콜 유무 판별: URL 문자열에 '//'가 존재하면 'https://'처럼 프로토콜이 포함된 것이므로, '/' 기준으로 분리했을 때 세 번째 요소(인덱스 2)가 호스트 이름이 됩니다.
- 포트 번호 제거: 'www.example.com:8080'과 같이 포트가 붙은 경우, ':' 기준으로 분리하여 첫 번째 요소만 남깁니다.
- 쿼리 문자열 제거: '?' 이후의 파라미터는 호스트 이름과 무관하므로 제거합니다.
이처럼 split() 함수만으로도 별도의 라이브러리 없이 간단하게 호스트 이름을 추출할 수 있습니다. 참고로 최신 브라우저 환경에서는 new URL(urlString).hostname을 사용하는 방법도 있으니, 상황에 맞게 선택하여 사용하시면 됩니다.