在javascript中的单词前后截断字符串

use*_*721 7 javascript string truncate

如何在模式之后或之前截断字符串?

假设我有一个字符串,"abcdef"我需要在之后截断所有内容,"abc"因此输出将是:

def

如果我"def"在输出之前说 truncate应该是:

abc

下面是我试过的代码

var str1 = "abcdefgh";
var str2 = str1.substr(str1.indexOf("abc"), str1.length);
console.log(str2);
Run Code Online (Sandbox Code Playgroud)

我没有得到输出。

我被困在这里任何帮助将不胜感激。

hem*_*nth 8

您需要传递“abc”的长度作为 substr 方法中的第二个参数

var str1 = "abcdefgh";
var pattern = "abc";
var str2 = str1.substr(str1.indexOf(pattern), pattern.length); <-- check this line
console.log(str2);
Run Code Online (Sandbox Code Playgroud)

但是,对于字符串中不存在的模式,上面的代码可能会返回意外的结果。

var str1 = "abcdefgh";
var pattern = "bcd";
var str2 = "";
if(str1.indexOf(pattern)>=0) //if a pattern is not present in the source string indexOf method returns -1
{
  //to truncate everything before the pattern
   //outputs "efgh"
  str2 = str1.substr(str1.indexOf(pattern)+pattern.length, str1.length);
console.log("str2: "+str2);

  // if you want to truncate everything after the pattern & pattern itself
  //outputs "a"
  str3 = str1.substr(0, str1.indexOf(pattern));
  console.log("str3: "+str3);
} 
Run Code Online (Sandbox Code Playgroud)


ave*_*isk 5

var str = "sometextabcdefine";
var pattern = "abc";
var truncateBefore = function (str, pattern) {
  return str.slice(str.indexOf(pattern) + pattern.length);
};
var truncateAfter = function (str, pattern) {
  return str.slice(0, str.indexOf(pattern));
} 
console.log(truncateBefore(str, pattern)); // "define"
console.log(truncateAfter(str, pattern)); // "sometext"
Run Code Online (Sandbox Code Playgroud)