首页 > 解决方案 > 我如何知道 JS 中的第二行位置?

问题描述

var flight = `
  KE 925 H 18SEP 6 ICNAMS DK1  1405 1855  18SEP  
  KL1733 H 18SEP 6 AMSBRU DK1  2130 2215  18SEP
`;    
    
console.log(flight.substr(49, 7))

我有这个字符串flight,我想定位第二行的第一个位置。

这是我知道的唯一方法:

flight.substr(49, 7)

49 表示第 49 位的字符。但是,第一行中的字符数经常变化,因此无法flight.substr(49, 7)静态写入。

那么我怎么知道第二行的第 0 位呢?

我正在寻找类似的东西flight.substr(secondline 0, 7)

标签: javascript

解决方案


编程不是重复代码和 HTML。
如果我可以建议使用 RegExp 的不同方法将您的行解析为完整的票证

const flight = `KE 925 H 18SEP 6 ICNAMS DK1  1405 1855  18SEP  
KL1733 H 18SEP 6 AMSBRU DK1  2130 2215  18SEP`;

const EL_flights = document.querySelector("#flights");

const parseFliResCode = (ticket) => {

  const [code, flight, dd, num, from, to, seat, dt, at, ad] =
    /^(.{8}) (.{5}) (.) (.{3})(.{3}) (.{4}) (\d{4}) (\d{4}) +(.{5}) *$/
    .exec(ticket);
    
  return {
    flight, num, seat, 
    from, [`departure date`]: dd,  [`departure time`]: dt,
    to, [`arrival date`]: ad,  [`arrival time`]: at,
  };
  
};

flight.split("\n").forEach((code) => {
  const obj = parseFliResCode(code);
  const HTML = Object.entries(obj).reduce((h, [key, val]) =>
    h + `<div class="cell">
      <span class="key">${key}:</span>
      <span class="val">${val}</span>
    </div>`
  , "");
  EL_flights.insertAdjacentHTML("beforeend", `<div class="ticket">${HTML}</div>`);
});
* {margin: 0; box-sizing: border-box}
body {font: 14px/1.4 sans-serif;}

.ticket {
  border: 1px solid hsl(150 40% 80%);
  padding: 5px;
  display: flex;
  flex-flow: row wrap;
  margin-bottom: 5px;
  background: hsl(150 40% 94%);
}

.ticket .cell {
  padding: 3px 10px;
  display: flex;
  flex: 1 0 33.333%;
  align-items: baseline;
}

.ticket .key {
  text-transform: capitalize;
  opacity: 0.5;
  margin-right: 0.5em;
}

.ticket .val {
  font-size: 1.4em;
  font-family: monospace;
}
<div id="flights"></div>

Regex101.com上的正则表达式示例


推荐阅读