代码之家  ›  专栏  ›  技术社区  ›  prgrmr

Javascript规范化字符串

  •  -1
  • prgrmr  · 技术社区  · 8 年前

    因此,我必须解析一个搜索字符串,以便稍后从中生成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) 如何将2016年SFO拆分为2016年SFO 2) 这是最好的方法吗?

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   raul.vila    8 年前

    请参阅代码段和工作示例:

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