Javascript规范化字符串

时间:2018-04-18 19:49:31

标签: javascript json string normalization

所以我必须解析一个搜索字符串,以便稍后从中生成一个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/

1 个答案:

答案 0 :(得分:0)

请参阅带有工作示例的代码段:



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);
}