【问题标题】:Find Text between x and y String in Javascript [duplicate]在Javascript中查找x和y字符串之间的文本[重复]
【发布时间】:2019-09-25 10:46:11
【问题描述】:

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

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

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

如何获取“start”和“end”之间的字符串? 它之间的随机文本的长度是未知的。

我试过了:

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 的字符串作为开始和结束。

【问题讨论】:

  • 请发表您的尝试和遇到的错误。
  • 你能告诉我你试过什么代码吗?
  • 。您可以提供slice()xy 的索引总和及其长度。 str.slice(str.indexOf(x) + str.length, str.indexOf(y) + y.length + 1)
  • 好吧,更好地解释你的问题(或者更确切地说是你的预期行为)不会有什么坏处,因为这个问题实际上并不是很清楚。您想获取 还是两者之间的文本?因为代码应该如何知道随机文本的开始和结束,除非你定义中间的文本看起来像什么(这没有意义,因为你已经知道你正在寻找什么文本并且不会'不需要提取它...)

标签: javascript node.js


【解决方案1】:

对不起,这是Get Substring between two characters using javascript 的副本我从那里修改了答案以适应我的目的:

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

【讨论】:

    【解决方案2】:

    这是一个假设&lt;random text&gt; 不包含startend 的解决方案。

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

    【讨论】:

      【解决方案3】:

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

      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}`);
          });
      }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          您可以编写自己的函数,该函数接受 2 个数字、子字符串函数的起点和终点。

          【讨论】:

          • 我知道 .substring(),但这不是我要找的。我想使用字符串而不是索引(数字)来获取文本。我更新了问题以便更好地理解。
          • 你提到的“随机文本”,是一个特定的词,还是一堆随机的词?我有一种感觉,你要做的第一件事就是 string.split(' ') 创建一个包含字符串中每个单词的数组。然后您在该数组中查找特定的开始和结束词,然后返回这两个点之间的所有内容。
          • 随机文本是一堆长度未知的随机单词。 string.split(" ") 的好主意,但是如果我有例如 *start,它会检测为“start”。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-23
          • 2021-09-11
          • 1970-01-01
          • 2011-03-23
          • 1970-01-01
          相关资源
          最近更新 更多