Javascriptでurlのパスを取得

こんにちは!tonです

概要

javascriptでurlの文字列からパスの文字列を取得したい。
http://localhost:3000/hoge/huga
の場合は’hoge/huga’の部分
http://localhost:3000/
の場合は’/’を取得したい

splitしてsliceしてjoinする

// 'http://localhost:3000/hoge/huga'.split('/').slice(3)
// →["hoge","huga"]
let path = 'http://localhost:3000/hoge/huga'.split('/').slice(3).join('/')
path == '' ? '/' : path
// →"hoge/huga"

// 'http://localhost:3000/'.split('/').slice(3)
// →[""]
path = 'http://localhost:3000/'.split('/').slice(3).join('/')
path == '' ? '/' : path
// →"/"

splitしてsliceして+=演算子を使う

let path_list = 'http://localhost:3000/hoge/huga'.split('/').slice(3)
let path = ''
for(let v of path_list){
  path += (v == '') ? '/' : v
}
// →"hoge/huga"

path_list = 'http://localhost:3000/'.split('/').slice(3)
path = ''
for(let v of path_list){
  path += (v == '') ? '/' : v
}
// →"/"

不完全燃焼

  • 三項演算子使わない方がいい?もう少しシンプルにしたい。replace使えばシンプルにいけそうだけど、正規表現が分からぬ…
  • Javascript側、もしくはライブラリなんかでurl扱うメソッドとかない?

ちなみにrubyの場合、URI.splitを使う

require 'uri'
URI.split('http://localhost:3000/')
=> ["http", nil, "localhost", "3000", nil, "/", nil, nil, nil]
indexurlの要素
0scheme
1userinfo
2host
3port
4registry
5path
6opaque
7query
8fragment

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です