アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javascriptで文字列から、任意の文字を抽出したい。

下記のような、グーグルストリートビューの貼り付けコードがあります。
「htp://maps.google.co.jp/maps?f=q&hl=ja&ie=UTF8&om=1&layer=c&ll=35.659406,139.744742
&spn=0,0.019205&z=16&brcurrent=3,0x60188bbd9a93fb75:0x34e0de0018b3269,1
&cbll=35.659362,139.744854&panoid=-o46OC9WbmlXHKjOyLWB8Q
&cbp=12,159.95,,0,-38.84」

※先頭のhttpは、htpにしてあります。

この文字列の中から、
35.659362(2番目に出てくる北緯)
139.744854(2番目に出てくる東経)
159.95
-38.84
の、4つの部分の数字をそれぞれ抽出したいのですが、
Javascriptで可能でしょうか。
各数値の桁数は変わる場合があります。

宜しく、お願いします。

A 回答 (4件)

よくわかってないけれど・・・



locationから取得するということでよいのかしら?
パラメータの構造を把握していませんが、「cbll」と「cbp」をkeyにしてあとは順番でよいのなら、こんな感じ?
(locationからでない場合は、代わりに初期値として代入)

var i = 0, p, tmp, data = [];
var key1 = "cbll", key2 = "cbp"; // keycode
var srch = location.search.slice(1).split("&");

while (p = srch[i++]) {
 p = p.split("=");
 if (p[0] == key1 || p[0] == key2) {
  tmp = p[1].split(",");
  if (p[0] == key1) {
   data[0] = tmp[0], data[1] = tmp[1];
  } else {
   data[2] = tmp[1], data[3] = tmp[4];
  }
 }
}

alert(data.toString());
    • good
    • 0
この回答へのお礼

fujillin様

早速のご返答ありがとうございました。

後巨時頂いたソースを参考にさせて頂きます。

お礼日時:2010/10/02 11:01

張り付ける前ですよね、


これで↓

<script type="text/javascript">
<!--
var cbll={lat:"",lng:""};
var cbp={lat:"",lng:""};
var str="htp://maps.google.co.jp/maps?f=q&hl=ja&ie=UTF8&om=1&layer=c&ll=35.659406,139.744742&spn=0,0.019205&z=16&brcurrent=3,0x60188bbd9a93fb75:0x34e0de0018b3269,1&cbll=35.659362,139.744854&panoid=-o46OC9WbmlXHKjOyLWB8Q&cbp=12,159.95,,0,-38.84";
var parm = str.split("&");
for(var i=0;i<parm.length;i++){
if(parm[i].split("=")[0]=="cbll"){
cbll.lat=parm[i].split("=")[1].split(",")[0];
cbll.lng=parm[i].split("=")[1].split(",")[1];
}
if(parm[i].split("=")[0]=="cbp"){
cbp.lat=parm[i].split("=")[1].split(",")[4];
cbp.lng=parm[i].split("=")[1].split(",")[1];
}
}

alert(cbll.lat);
alert(cbll.lng);
alert(cbp.lat);
alert(cbp.lng);

// -->
</script>
    • good
    • 0
この回答へのお礼

yyr446様

ご教示頂きありがとうございます。
ソースを参考に進めさせていただきます。

お礼日時:2010/10/02 11:05

はりつけるまえですよね、その2


ぜんかくくうはくは、はんかくにしてね。

var getQuery = function (querys) {
 var result = { };
 var i = 0
 var query;
 var nv;

 querys = querys.split ('&');

 while ((query = querys[i++])) {
  nv = query.split ('=');
  result[ decodeURIComponent (nv[0]) ] = decodeURIComponent (nv[1]);
 }

 return result;
};

var locationSplit = function (url) {
 return /^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(url);
};

var str =
 'htp://maps.google.co.jp/maps?f=q&hl=ja&ie=UTF8&om=1&layer=c&ll=35.659406,139.744742' +
 '&spn=0,0.019205&z=16&brcurrent=3,0x60188bbd9a93fb75:0x34e0de0018b3269,1' +
 '&cbll=35.659362,139.744854&panoid=-o46OC9WbmlXHKjOyLWB8Q' +
 '&cbp=12,159.95,,0,-38.84';
var val = getQuery (locationSplit (str)[6]);
var cbll = val.cbll.split(',');
var cbp = val.cbp.split(',');

alert ([cbll[0], cbll[1], cbp[1], cbp[4]]);
    • good
    • 0
この回答へのお礼

babu_baboo様

ご返答していただき、ありがとうございました。
参考にさせて頂きます。問題が解決しました。

お礼日時:2010/10/02 11:10

GitHub にサンプルコードをおきました。



gist: 605899 - GitHub
http://gist.github.com/605899

var uri = 'htp://maps.google.co.jp/maps?f=q&hl=ja&ie=UTF8&om=1&layer=c&ll=35.659406,139.744742&spn=0,0.019205&z=16&brcurrent=3,0x60188bbd9a93fb75:0x34e0de0018b3269,1&cbll=35.659362,139.744854&panoid=-o46OC9WbmlXHKjOyLWB8Q&cbp=12,159.95,,0,-38.84';
var querys = getQuerys(uri);
var targets = querys['ll'].split(',');
alert(targets[0]); // 35.659406
alert(targets[1]); // 139.744742
    • good
    • 0
この回答へのお礼

think49様

ご返答ありがとうございます。
参考にさせて頂きます。

お礼日時:2010/10/02 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!