我有一个读取另一个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的字符串作为开始和结尾。
答案 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>
不包含start
和end
的解决方案。
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));