【问题标题】:parse a string in javascript by a common delimiter通过通用分隔符解析 javascript 中的字符串
【发布时间】:2013-06-16 19:27:57
【问题描述】:

在 javascript 中,我有一个格式为“/john/smith”的字符串。我想得到数组 "first-name" : "john", "last-name" : "smith"。

js 是否有一些简单的函数可以根据分隔符解析这个字符串?我没有看到任何东西,谷歌除了做一些正则表达式之外什么也没返回。

【问题讨论】:

    标签: javascript regex string parsing


    【解决方案1】:
    var str="/john/smith"
    var ar=str.split("/");
    

    现在 ar[1] 将包含 firstname

    & ar[2] 将包含 姓氏

    【讨论】:

      【解决方案2】:

      像这样?:

      var str = "/john/smith";
      
      //empty is here because if you split by / you'll get ["", "john", "smith"]
      var getObject = function(empty, first, last) {
          //You could traverse arguments, witch will have every match in an "array"
          return {
             first_name: first,
             last_name: last
          };
      }
      
      firstAndLastName = getObject.apply(null, str.split('/')); //Object {first_name: "john", last_name: "smith"}
      

      【讨论】:

        【解决方案3】:

        您可以为此使用 .split() 方法。有关 .split() 的参考,请参阅 MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

        使用起来非常简单。

        var namestring = "/John/Smith";
        var pieces = namestring.split("/");
        

        pieces[1] 包含“John”,pieces[2] 包含“Smith”。请注意,这些索引数组是 1 和 2,而不是 0 和 1。pieces[0] 包含 "" 因为 split() 返回由提供的分隔符分隔的字符串。第一个“/”字符前有一个空字符串,所以第一个结果是空的。

        【讨论】:

          【解决方案4】:

          split() 方法可以解决问题

          var str="/john/smith"
          var arr=str.split("/");
          

          arr[1] 将给出 forstname,arr[2] 将给出 secondname

          【讨论】:

            【解决方案5】:

            简单的 Javascript split 方法应该可以工作。

            var myOriginalString = '/John/Smith';
            var afterSplitArray = myOriginalString.split('/');
            var firstName = afterSplitArray[1]; // John
            var lastName = afterSplitArray[2]; //Smith
            

            唯一的问题是,如果您的原始字符串以分隔符开头,您必须从 index = 1 开始访问变量,如上例所示。

            【讨论】:

              【解决方案6】:

              对于您的特定示例,有几种方法可以做到这一点,因为大多数其他答案会在开头留下/,这些将输出正确的结果:

              var result = str.match(/[^/]+/g);
              

              或者:

              var result = str.split('/').slice(1);
              

              【讨论】:

                猜你喜欢
                • 2020-06-12
                • 1970-01-01
                • 1970-01-01
                • 2012-07-31
                • 2014-03-02
                • 2012-05-13
                • 2015-08-18
                • 2018-05-05
                • 2011-03-29
                相关资源
                最近更新 更多