如何在字符串中搜索子字符串并 return 该字符串

How do I search for a substring within a string and return that string

我正在尝试将以下逻辑添加到 GTM 中的以下自定义 Javascript 变量: “查找字符串是否包含这个词,以及 return 那个词”

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;

  return classes ;
}

在上面的代码中 classes 变量 returns 以下字符串:

'wp-block-button jungle-cta tiger-animal'

我正在尝试执行以下操作:如果字符串包含“tiger”,则 return“tiger-animal”,仅此。

我正在将此功能应用于同一着陆页上的不同 CTA。每个 CTA 都有一个老虎常量作为 class 名称的一部分。因此,一个 CTA 是“老虎-动物”,另一个是“老虎-某物”、“老虎-词”等。我正在寻找与“老虎-”之后的内容无关的逻辑。如果找到老虎,则解析包含老虎的单词和 return 它。

更新:

以下内容现在可以使用了!谢谢。

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;
  var regex = /tiger-[a-z]*/g;
  var found = classes.match(regex);
  return found[0]
}

正在更新此处的代码以匹配您在评论中提到的内容。如果匹配,现在 return 是字符串,否则 return 是未定义的:

function checkIfTiger(input) {
  const regex = /tiger-[a-z]*/g;
  const found = input.match(regex)
  return found !== null && found[0]
}

checkIfTiger("fsd adfj adkfj tiger-adsf dfadf")
// returns "tiger-asdf"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

如何使用 .includes 属性。例如:

let a = 'wp-block-button jungle-cta tiger-animal'

function checkIfTiger() {
  if(a.includes("tiger")) {
    return "tiger-animal"
  }
}

checkIfTiger()

实际上,这是一个代码较少的版本。它 return "tiger-animal" 如果 "tiger" 存在于你正在检查的任何内容中,否则 returns false:

let a = 'wp-block-button jungle-cta tiger-animal'

function checkIfTiger() {
  return a.includes("tiger") && "tiger-animal"
}

checkIfTiger()

如果您希望对此函数进行的唯一重要更改是,如果您的变量 classes 包含子字符串 [=15=,它将 return 字符串 "tiger-animal" ],那么我推荐一个简单的 if/else statement that makes use of the .includes() 方法,如果您的字符串包含指定的子字符串,则 return 为 true,如果不包含,则为 false。例如:

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;
  
  if (classes.includes("tiger")) {
    return "tiger-animal";
  } else {
    return classes;
  }
}

如果您不觉得它会影响可读性,ternary operator 使用更少的行:

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;
      
  return (classes.includes("tiger") ? "tiger-animal" : classes)
}

这两个函数将 return classes,或者,如果 classes 包含子字符串 "tiger",它将 return 字符串 "tiger-animal".

对于任何想知道如何检查子字符串的路人,这里有一个更简单的函数,它使用较少的问题原始上下文来演示这个原则:

function tigerChecker(string) {
      let classes = string
      
      if (classes.includes("tiger")) {
        return "tiger-animal";
      } else {
        return classes;
      }
    }