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

时间:2014-01-24 06:47:02

标签: javascript string truncate

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

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

def

如果我说在"def"之前截断,则输出应为:

abc

以下是我尝试的代码

var str1 = "abcdefgh";
var str2 = str1.substr(str1.indexOf("abc"), str1.length);
console.log(str2);

我没有得到输出。

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

4 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:4)

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"

答案 2 :(得分:0)

这样的事情怎么样:

function truncateAfter(original, pattern) {
  return original.substring(0, original.indexOf(pattern) + pattern.length);
}

这样做是找到你正在寻找的模式的第一个索引,并返回原始字符串的子字符串,该字符串从模式的第一个实例开始到结尾。

示例用法:

truncateAfter('dabcdefghi', 'abc');
>> 'dabc'

如果你想要在你正在寻找的模式之前和之后截断输出,只是检查模式是否在字符串中,然后使用模式作为输出是你正在寻找的?

function truncate(original, pattern) {
  if (original.indexOf(pattern) != -1) {
    return pattern;
  }
}

示例用法:

truncate('dabcdefghi', 'abc');
>> 'abc'

答案 3 :(得分:0)

请参阅以下代码:

var str1 = "abcdefgh";
var str2 = str1.substr(str1.indexOf("abc")+3, str1.length);

alert(str2);

你是对的,但你错过的一件事是在indexOf中做+3。 indexOf(“abc”)将返回0,这反过来将再次给你整个字符串。

或查看这个小提琴链接:

Working Fiddle