删除文本字符串的特定部分

remove a certain part of a text string

我正在尝试删除字符串的某些部分以隔离句子的值。 我想将喜欢的东西存储在名为 thingLoved 的 var 中。所以当你输入“我爱猫”时,你可以得到 console.log(thingLoved) = cats

为此,我试图从第一句中删除 I love,这样它就只剩下“苹果”了。 在那个例子中,我可以删除 love 但不能删除 i love (因为我猜有一个 space),我不知道该怎么做。

感谢您的帮助。

function individuaLetters(e){
  e.each(function(){
    var letters = $(this).html().replace(/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/).toLowerCase();
    console.log(letters);
      
    if (letters.includes("i love")) {
      var thingLoved = $(this).html().replace("i love","")
      console.log(thingLoved);
    };
  })
}

var text = $('div').find('.indiv');
individuaLetters(text);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <span class="indiv">I love apples</span>   
</div>

如果您需要更多匹配项和不区分大小写的修饰符 (/i),请使用带有交流发电机 (|) 的正则表达式:

function individuaLetters(e){
  e.each(function(){
    var letters = $(this).html().replace(/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/).toLowerCase();
    console.log(letters);
      
    if (letters.includes("i love")) {
      var reg = /i love/i
      var thingLoved = $(this).html().replace(reg,"")
      console.log(thingLoved);
    };
  })
}

var text = $('div').find('.indiv');
individuaLetters(text);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <span class="indiv">I love apples</span>   
</div>

根据@Vishal Jain 的回答,正则表达式可能是最好的方法,但这是对您最初尝试做的事情的基本修复:

function individuaLetters(e){
  e.each(function(){
    var letters = $(this).html().replace(/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/).toLowerCase();
    console.log(letters);
      
    if (letters.includes("i love")) {
      var thingLoved = letters.replace("i love","") .trim();         
      console.log(thingLoved);     
    }
  })
}

var text = $('div').find('.indiv');
individuaLetters(text);

基本上,您试图替换原始 html 字符串中的“i love”,实际上它仍然包含“I love”(即您需要调用 includes() letters变量)。