在Java脚本中的x和y字符串之间查找文本

时间:2019-05-07 18:03:46

标签: javascript node.js

我有一个读取另一个js文件的节点脚本,并且我想获取该js文件中特定变量的值。我可以想象,有更好的解决方案可以精确地解决我的问题,但是我想要一个功能,以后可以在例如Web应用程序中再次使用。

我需要一个函数,该函数返回X字符串和Y字符串之间的字符串。例如:

const string2searchin = "<random text with unknown length> /start/ i want to be selected /end/ <random text with unknown length>"

如何获取“开始”和“结束”之间的字符串? 介于其间的随机文本的长度未知。

我已经尝试过了:

var getText = (string, start, end) => {
    let arr = string.split("");
    let listen = false;
    let output = [];

    for(let el of arr){
        if(el == end && listen) return output.toString();
        if(listen) output.push(el);
        if(el == start && !listen) listen = true;
    }
} 

它可以正常工作,但只能使用单个字符。我想将长度大于1的字符串作为开始和结尾。

5 个答案:

答案 0 :(得分:0)

听起来像您正在寻找.substring()吗? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

您可以编写自己的函数,该函数采用2个数字,即子字符串函数的起点和终点。

答案 1 :(得分:0)

var x = "start";
var y = "end";
var str = "<random text> start i want to be selected end <random text>";
console.log(str.substring(str.indexOf(x) + x.length, str.lastIndexOf(y)));

答案 2 :(得分:0)

您也可以使用正则表达式。试试这个

const regex = /start(.*)end/gm;
const str = `<random text> start i want to be selected end <random text>`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    // This result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

答案 3 :(得分:0)

这是一个假设<random text>不包含startend的解决方案。

const string2searchin = "<random text> start i want to be selected end <random text>";
s = string2searchin.split('end')[0].split('start')[1].trim();

答案 4 :(得分:0)

抱歉,这是Get Substring between two characters using javascript的副本,我从那里修改了一点答案以适合我的目的:

var findText = (string, x, y) => string.substring(string.lastIndexOf(x) + x.length, string.lastIndexOf(y));