Пропустить одно и то же строковое значение - PullRequest
0 голосов
/ 28 июня 2018

var data = "20 FIXED\r\n7 FIXED BUT FX KFY 200\r\n 9 FIXED BUT FZ MX KFY 150 KMZ 200\r\nLOAD 1 LOADTYPE Dead  TITLE DEAD";


function pullBetTwoStrings(data, str1, str2) {

 return data.split(str1)[1].split(str2)[0].trim();
}

var support_FBnode_data = pullBetTwoStrings(data, "FIXED", "LOAD" );
console.log(pullBetTwoStrings(data,"FIXED", "LOAD"));

У меня есть список строк в таком формате:

var data = "20 FIXED\r\n
           7 FIXED BUT FX KFY 200\r\n
           9 FIXED BUT FZ MX KFY 150 KMZ 200\r\n
           LOAD 1 LOADTYPE Dead  TITLE DEAD"

Как получить только средние? Я хочу достичь так:

7 FIXED BUT FX KFY 200
9 FIXED BUT FZ MX KFY 150 KMZ 200

У меня есть код ниже, который я использую для получения промежуточных данных, но он останавливается всякий раз, когда снова достигает строки FIXED.

function pullBetTwoStrings(data, str1, str2) {

 return data.split(str1)[1].split(str2)[0].trim();
}

var support_FBnode_data = pullBetTwoStrings(data, "FIXED", "LOAD" );

так что приведенные выше коды дают мне результат 7, потому что он находится между двух строк FIXED.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Если ваш строковый шаблон всегда один и тот же, вы можете использовать регулярные выражения следующим образом:

var a = "20 FIXED\n\r 7 FIXED BUT FX KFY 200\n\r 9 FIXED BUT FZ MX KFY 150 KMZ 200\n\r LOAD 1 LOADTYPE Dead  TITLE DEAD";

if (/\d+\sFIXED BUT(\s|\w+|\d+)+(\n\r)/g.test(a)) {

    var result = /((\d+\s)(FIXED BUT)(\s|\w+|\d+)+(\n\r))/g.exec(a);
    console.log("this is result: " + result[0]);
}

/*this is result: 7 FIXED BUT FX KFY 200

9 FIXED BUT FZ MX KFY 150 KMZ 200*/
0 голосов
/ 28 июня 2018

Если вы не хотите заканчивать массивом строк, но строкой, вы можете использовать String.slice , как показано ниже:

var data = "20 FIXED\r\n7 FIXED BUT FX KFY 200\r\n9 FIXED BUT FZ MX KFY 150 KMZ 200\r\nLOAD 1 LOADTYPE Dead  TITLE DEAD";
var innerData = data.slice(data.indexOf('\r\n') + 2, data.lastIndexOf('\r\n'));
console.log(innerData);
0 голосов
/ 28 июня 2018

Ниже приведены шаги для достижения этого:

Шаг 1. Преобразуйте строковые данные в массив, разделив их \ r \ n.

Шаг 2. Используйте array.shift (); Это удаляет первый элемент из массива и возвращает только этот элемент.

Шаг 3. Используйте array.pop (); Удаляет последний элемент из массива и возвращает только этот элемент.

var data = "20 FIXED\r\n7 FIXED BUT FX KFY 200\r\n 9 FIXED BUT FZ MX KFY 150 KMZ 200\r\nLOAD 1 LOADTYPE Dead  TITLE DEAD";


function pullBetTwoStrings(data) {
     var result=data.split("\r\n");
     result.shift();
      result.pop(); 
     return result;
}

console.log(pullBetTwoStrings(data));
...