【问题标题】:How to strip the last part of a query string如何剥离查询字符串的最后一部分
【发布时间】:2010-08-10 09:25:15
【问题描述】:

我需要使用 javascript 隔离字符串中的 id。我已经设法到达了我到达 id 的部分,但是我希望能够将字符串的其余部分串起来,以便它只留下 id 号,如下所示:

  var urlString = "http://mysite.co.za/wine/wine-blog/blogid/24/parentblogid/15.aspx";


    // if the blogid is found in the url string

    if (urlString.indexOf("blogid") != -1) {
        alert("blogid id found");

        // we strip the string to isolate the blogid

        url = urlString.substring(urlString.indexOf("blogid") + 7);

        //alert("url : " + url)
        blogId = url.substring(0, urlString.indexOf("/"));

        alert("blogId : " + blogId)
    }

我需要能够在 24 岁之后剥离一切。

谢谢大家。

【问题讨论】:

  • 你试过用“/”分隔符分割字符串吗?尝试使用 string.split("/") 并使用数组操作来满足您的需要

标签: javascript substring indexof


【解决方案1】:
var tempString = urlString.Split("blogid")[1];
var blogIdStr = tempString.Split("/")[1];

对于整数:

var blogId = parseInt(blogIdStr);

[编辑:]
长格式是:

var tempArray = urlString.Split("blogid");
// try:
// alert(tempArray, tempArray.length);
var tempString = tempArray[1];
(...)

【讨论】:

  • 你在开玩笑吧! :) 谢谢马丁!
  • 编辑了我的答案以便更好地理解。 ^^ @other 答案:我同意 regexp 的强大功能,但对于没有 regexp 经验的程序员(如我)来说,以上内容更具可读性并且可以直接追踪。此外,在调试时,您会看到字符串“blogid”出现了两次,从而创建了一个包含 3 个字段的 tempArray。谈论贪婪或不搜索。
  • 如果您希望数字为十进制,则应始终使用 parseInt(x, 10),否则您可能会以十六进制/八进制结束。
  • 谢谢马丁,我会保留那个以备不时之需!太棒了!
【解决方案2】:

你可以试试这个:

var blogIdStr = urlString.replace(/(.*\/blogid\/\d+).*/, "$1") 

【讨论】:

    【解决方案3】:

    这是正则表达式既简单又容易理解的罕见情况之一:

    var matches = urlString.match(/\/blogid\/(\d+)\//);
    if (matches) {
        var id = matches[1];
    }
    

    或者,如果您不担心错误:

    var id = urlString.match(/\/blogid\/(\d+)\//)[1];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多