【问题标题】:how to parse a javascript string from a url in django如何从 django 中的 url 解析 javascript 字符串
【发布时间】:2012-08-31 19:06:52
【问题描述】:

我在 javascript "/people/things/" 中有这个 url 我想要一个只返回 "things" 的函数,我该怎么做?

我尝试过丑陋的东西。就像迭代一样,但是当我必须弄清楚如何删除字符串的其余部分并且渐近地非常缓慢时,我陷入了困境。

我不断收到“非法”。超级烦人。

$(function() { 

    var parse = function(str) {

        var a = "";   
        if (str.length && str.length > 1) {

           str = str.slice(0, str.length -1);   //remove first

            for (var i = str.length; i > 1; i--) {
                if (str[i] !== '\\' ) {
                      a += str[i];
                    }

            }


        }

        return a;

    };   

       c = "\things\stuff\";
       alert(parse(c));        //result should be "things"                

});​

【问题讨论】:

    标签: javascript html django url


    【解决方案1】:

    首先,您可以改用match() 来简化代码:

    var s = "/people/things/";
    var match = s.match(/\/([^/]+)\/$/);
    var things = match[1]; // "things"
    

    关于ILLEGAL 错误,那是因为您忘记转义字符串中的\。所以不要使用\things\stuff\,而是使用\\things\\stuff\\

    现在,转到您的 parse 函数。总体思路是正确的,但是您有几个实现错误:

    1. 找到\\ifelse 部分)后,break 立即退出循环;否则,您将跳过\,添加所有个其他字符;
    2. 您正在从头开始遍历数组,并将每个字符添加到字符串中;因此,最后,你会得到一个 reversed 字符串。要修复它,请使用a = str[i] + a,而不是使用a += str[i]
    3. i 应该以a.length - 1 开头,而不是a.length

    这是最终版本:

    var parse = function(str) {
      var a = '';   
      if (str.length && str.length > 1) {
        str = str.slice(0, str.length -1);
        for (var i = str.length - 1; i > 1; i--) {
          if (str[i] !== '\\' ) {
            a = str[i] + a;
          } else {
            break;   
          }
        }
      }
      return a;
    };
    

    DEMO.

    【讨论】:

    • @Dave:那个基本匹配一个/,后面再匹配一个不等于/的字符,即[^/]+,再匹配最后一个/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多