概要
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 |
0 件のコメント:
コメントを投稿