【问题标题】:url string, jquery/js get numbers that are between two slashesurl 字符串,jquery/js 获取两个斜杠之间的数字
【发布时间】:2016-04-21 13:07:16
【问题描述】:

我正在开发一个具有如下所示网址的论坛:

http://www.place.com/forum/d7/2/
http://www.place.com/forum/d7/22/
http://www.place.com/forum/d7/234/
http://www.place.com/forum/d7/9999/
http://www.place.com/forum/d7/98765/

/d7/ 是用户名 /2/是用户ID

用户 ID 从 1 变为无限制。

如何“获取”用户 ID?

如果它只有一个数字,例如 2,我想出了如何得到它。但是我如何告诉它查看最后两个斜线之间的每个数字?

【问题讨论】:

  • 链接我们一些你写的代码,我们会调整它。 ;)

标签: jquery slice


【解决方案1】:

另一种可能的解决方案是:

var result, str = "http://www.place.com/forum/d7/98765/";
var lastIndex = str.lastIndexOf('/');
if (str.slice(-1) != "/") {
    result = str.substring(lastIndex + 1, str.length);
}
else {
    var prevIndex = str.lastIndexOf('/', lastIndex - 1);
    result = str.substring(prevIndex + 1, lastIndex);
}

找到/ 的最后一个索引和倒数第二个然后找到子字符串,如果没有尾随/,则查找后面的所有内容。

编辑:添加了没有尾随 / 的解决方案,因为我受到 @Fallenreaper 的启发

小提琴:https://jsfiddle.net/uzxcodu1/1/

【讨论】:

    【解决方案2】:

    可以使用正则表达式:

    /^.*/(\d+)/$/mg
    

    再提琴:http://refiddle.com/refiddles/56995c8875622d3ff7aa0000

    示例代码:

    var url="http://www.place.com/forum/d7/98765/"
    var re = /^.*\/(\d+)\/$/mg;
    var id= re.exec(url)[1]
    alert(id);
    

    js 小提琴:https://jsfiddle.net/r55wz2hp/

    (还有其他可能更好的方法与正则表达式一起使用)

    【讨论】:

      【解决方案3】:

      这将为您提供所需的答案。

      var url = "http://www.place.com/forum/d7/9999/".split("/");
      var id = url[url.length - 2];
      

      如果有尾随 /,这将起作用。

      如果没有,那么是-1而不是-2,但是如果你检查最后一个字符,你可以将其作为你的理解。

      var url = "http://www.place.com/forum/d7/9999/";
      var isLastSlash = (url[url.length -1]=="/")? true: false;
      var url= url.split("/");
      var id = url[url.length - (isLastSlash? 2: 1)];
      return id;
      

      【讨论】:

      • 谢谢,它工作得很好。你还教会了我一些关于如何“思考”使用字符串的意外知识,所以也谢谢你。 :)
      • 没问题! :) 我很高兴能帮上忙。我还想编写备用网址,以防网址没有尾部斜杠(/),或者它是可选的并且可能存在(或不存在)。不要忘记将答案标记为您选择正确的答案。这样未来的编码人员就会看到它。
      • 哦 +1 用于处理没有尾随斜杠的情况 =]
      • @Fallenreaper 将这里所做的事情扔到一个函数中,这样您就可以在需要时随时使用它,您可以根据需要修改所述函数以使其随时可重用。我的两分钱。
      • @NielsVermeiren Correcy,虽然我想表明它显然是一个布尔值
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多