跳过相同的字符串值
Skip the same string value
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 字符串之间。
以下是实现此目的的步骤:
步骤 1.Convert 将字符串数据拆分为数组 \r\n。
第 2 步。使用 array.shift(); 这会从数组中删除第一个元素,returns 仅删除该元素。
第 3 步。使用 array.pop(); 这会从数组中删除最后一个元素,returns 仅删除该元素。
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));
如果您的字符串模式始终相同,您可以使用如下正则表达式:
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*/
如果您不想以字符串数组结尾,而是以字符串结尾,您可以使用 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);
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 字符串之间。
以下是实现此目的的步骤:
步骤 1.Convert 将字符串数据拆分为数组 \r\n。
第 2 步。使用 array.shift(); 这会从数组中删除第一个元素,returns 仅删除该元素。
第 3 步。使用 array.pop(); 这会从数组中删除最后一个元素,returns 仅删除该元素。
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));
如果您的字符串模式始终相同,您可以使用如下正则表达式:
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*/
如果您不想以字符串数组结尾,而是以字符串结尾,您可以使用 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);