跳过相同的字符串值

时间:2018-06-28 05:52:32

标签: javascript string linefeed

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 :(得分:1)

以下是实现此目的的步骤:

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

答案 1 :(得分:0)

如果您的字符串模式始终相同,则可以使用以下正则表达式:

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*/

答案 2 :(得分:0)

如果您不想以字符串数组结尾,而是以字符串结尾,则可以使用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);