如何修改下面的函数来解析一个url?

时间:2016-09-22 06:29:13

标签: javascript google-tag-manager

我已经在Google跟踪代码管理器中编写了一个函数,我在其中获取了最有效的网址(http://www.testsite.com/amazon:32/)。看到下面的示例代码显示“amazon:32”,但是现在我只想显示“amazon”并在其他地方存储“32”。如何修改下面的功能才能执行此操作?

<script>
function lastSegment() {
var clickurl = "http://www.testsite.com/amazon:32/";
var brandName = clickurl.match(/\/([^\/]+)[\/]?$/);
brandName[1] = brandName[1].charAt(0).toUpperCase() + brandName[1].slice(1); //capitalize first lett of brand name
alert (lastSegment[1]);
}
</script>

再次感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你应该避免为此发射Regexp。基本上,你应该在你的情况下使用url.lastIndexOf('/'),它的效率和可读性更高。

function getBrandName(url) {
  if (url.endsWith('/')) {
    url = url.slice(0, url.length - 1);
  }

  var slashIndex = url.lastIndexOf('/');
  if (slashIndex === -1) { return {}; }

  var [ brand, number ] = url.slice(slashIndex + 1).split(':');
  brand = brand[0].toUpperCase() + brand.slice(1);
  return { brand, number };
}

以下是与您的网址一起使用时的输出:

> getBrandName("http://www.testsite.com/amazon:32/")
{ brand: 'amazon', number: '32' }