【问题标题】:Split two words into variables将两个单词拆分为变量
【发布时间】:2012-10-09 16:13:44
【问题描述】:

我从数据库中随机解析了这个 date/2 单词:

JAN 2012
FEB 2013
MAR 2014 

等等

我想在变量 a 中创建月份,在变量 b 中创建年份。 日期在跨度中解析如下:

<span class="rt_item">DEC 2012</span>

【问题讨论】:

  • 按空格分割就可以得到结果

标签: javascript jquery replace split


【解决方案1】:

您可以为此使用正则表达式:

var regex = /([A-Z]{3}) ([0-9]{4})/;
var matches = "JAN 2012".match(regex);
var a = matches[1];
var b = matches[2];

否则,使用.split(" "):

var matches = "JAN 2012".split(" ");
var a = matches[0];
var b = matches[1];

this fiddle 中演示了这两种方法。

【讨论】:

  • 匹配可以是任何 3 个字母的月份和 4 个数字的年份?
  • @jQuerybeast 是的。从技术上讲,这也将匹配“ZZZ 0000”。如果您愿意,我可以改进以仅匹配英语月份和年份。
  • Uncaught TypeError: Object /([A-Z]{3}) ([0-9]{4})/ has no method 'match'
  • 对不起,我编辑了代码,因为那里有错误。只需复制我编辑的代码 ("JAN 2012".match(regex))。 ;)
  • 拆分不会将 [2] 返回到日期。它返回未定义
【解决方案2】:
var mySplitResult = "MAR 2014".split(" ");
var x = mySplitResult[0];
var y = mySplitResult[1]; 

【讨论】:

    【解决方案3】:

    您可以创建一个对象数组,其中包含从跨度派生的 a(月)和 b(年)属性:

    var md = [],
        rtitems = $('.rt_item');
    for (var i=0;i<rtitems.length;i+1){
      var item = rtitems[i].text().split(' ');
      md.push ({a: item[0], b: item[1]});
    }
    

    对于一组跨度,例如:

    <span class="rt_item">DEC 2012</span>
    <span class="rt_item">JAN 2012</span>
    <span class="rt_item">FEB 2013</span>
    

    md[0].a 将是 'DEC'md[0].b 2012

    【讨论】:

    • 谢谢。这对我的情况没有帮助,因为我一直只有 1 个跨度,但在不久的将来它肯定会有所帮助。
    【解决方案4】:

    试试这个代码:

        var str="DEC 2012";
        var mon=str.substr(0,3);
        var year=str.substr(4,7);
    

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多