概要
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]
index | urlの要素 |
---|---|
0 | scheme |
1 | userinfo |
2 | host |
3 | port |
4 | registry |
5 | path |
6 | opaque |
7 | query |
8 | fragment |