【问题标题】:How to parse data from an extracted JSON object property using AngularJS?如何使用 AngularJS 从提取的 JSON 对象属性中解析数据?
【发布时间】:2022-01-27 21:17:44
【问题描述】:

我有一个 JSON 对象属性,它是一个字符串,如下所示:

"&1 *UBIN 8 &2 *UBIN 8 &3 *UBIN 8 &4 *CHAR 10 &5 *UBIN 8 &6 *UBIN 8 &7 *UBIN 8 &8 *CCHAR *VARY 4"

我想解析这个属性(字符串)以提取前面有 &(与号)的数字,并将每个提取的 &number 放入一个数组中。结果如下:

var array = ['&1', '&2', '&3', '&4', '&5', '&6', '&7', '&8'];

我正在使用 AngularJS。

关于如何最好地完成此任务的任何建议?

【问题讨论】:

    标签: javascript parsing


    【解决方案1】:

    试试这个

    var str="&1 *UBIN 8 &2 *UBIN 8 &3 *UBIN 8 &4 *CHAR 10 &5 *UBIN 8 &6 *UBIN 8 &7 *UBIN 8 &8 *CCHAR *VARY 4";
    
    var result = $.map(str.split(" "), function(element) {
      if ( element.substring(0,1)  == "&") return element;
    });
    

    结果

    ["&1","&2","&3","&4","&5","&6","&7","&8"]
    

    【讨论】:

      【解决方案2】:

      为此的算法将是“split() 和 filter()”。

      一种简单的方法可以检查第一个字符是否为 & 符号:

      input = "&1 *UBIN 8 &2 *UBIN 8 &3 *UBIN 8 &4 *CHAR 10 &5 *UBIN 8 &6 *UBIN 8 &7 *UBIN 8 &8 *CCHAR *VARY 4"
      
      input.split(" ").filter(item => item.startsWith("&"))
      

      这很好用而且速度很快,但假设只有数字可以在& 之后,所以它也会返回像&abc 这样的项目。

      你也可以使用正则表达式:

      input.split(" ").filter(item => item.match(/^&\d+$/))
      

      这更慢,但更健壮。它还假设只允许全数项目,因此它将拒绝像&12a 这样的项目。

      如果完整的要求列表不同,这两种解决方案都可以调整,因为问题不完全清楚,如果:

      • 分隔符是空格,也可以是其他字符(例如逗号、换行符或制表符)
      • & 开头的项目已知只包含数字,或者也可以包含其他字符
      • 负数是否有效

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多