【问题标题】:Javascript normalizing stringJavascript 规范化字符串
【发布时间】:2018-09-29 04:19:14
【问题描述】:

所以我必须解析一个搜索字符串,以便稍后从中生成一个 JSON 对象。

示例输入

"Amercian01 SFO2016"
"Amercian 01 SFO 2016"
"Amercian-01 2016SFO"
"Amercian:01 SFO16"

所有这些字符串的输出都应该返回

{
airline: "American",
flightNo: 01,
airport: "SFO",
year: "2016"
}

代码

var str = "Amercian-01 2016SFO";
document.write(str.split(/[ :-]+/));

它将输出 American,01, 2016SFO

2 个问题: 1)我如何将 2016SFO 拆分为 2016,SFO 2) 这是最好的方法吗?

这是一个小提琴https://jsfiddle.net/pdubey84/msebk5a2/

【问题讨论】:

  • 好的。你有问题吗?
  • 你有什么问题?你试过什么?你被困在哪里了?
  • StackOverflow 不是免费的编码服务。 SO希望您try to solve your own problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 抱歉,我按发送太快了,我以为我已经粘贴了代码。

标签: javascript json string normalization


【解决方案1】:

查看代码 sn-p 和工作示例:

getNormalizedData('American01 2016 SFO');
getNormalizedData('Amercian 01 SFO 2016');
getNormalizedData('American-01 SFO2016');
getNormalizedData('Amercian:01 SF0-2016');

function getNormalizedData(str) {
  var airline = str;
  var flightNo = "";
  var airport = "";
  var year = "";
  var airlineEndMatch = str.match(/[ \d\-\:]/);
  if (airlineEndMatch) {
    airline = str.substr(0, airlineEndMatch.index);
    str = str.substr(airlineEndMatch.index);
    if (!str[0].match(/\d/))
      str = str.substr(1);

    var flighNoEnd = str.indexOf(" ");
    flightNo = str.substr(0, flighNoEnd);
    str = str.substr(flighNoEnd);
    airport = str;
    var yearMatch = str.match(/\d{4}/);
    if (yearMatch) {
      year = yearMatch[0]
      airport = (airport.replace(year, ""))
        .trim()
        .replace("-", "");
    }
  }

  var flight = {
    airline: airline,
    flightNo: flightNo,
    airport: airport,
    year: year,
  }

  console.log(flight);
}

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 2010-10-10
    • 2020-02-12
    • 2012-04-25
    • 1970-01-01
    • 2013-06-29
    • 2019-04-19
    • 2015-05-23
    • 2014-05-10
    相关资源
    最近更新 更多