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

问题描述 投票:4回答:4

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

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

def

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

abc

以下是我尝试过的代码

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

我没有得到输出。

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

javascript string truncate
4个回答
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);
} 

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"

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'

0
投票

请参阅以下代码:

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

alert(str2);

你是对的,但你错过的一件事是在索引Of中做+3。索引(“abc”)世界返回0,它将再次给你整个字符串。

或者查看这个小提琴链接:

Working Fiddle

© www.soinside.com 2019 - 2024. All rights reserved.