2014-01-24 48 views
2

如何在模式之後或之前截斷字符串?在javascript中的一個單詞之前和之後截斷字符串

說,如果我有一個字符串"abcdef"我需要​​後截斷一切,所以輸出將是:

def

,如果我說"def"之前截斷輸出應該是:

abc下面是我試過的代碼

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

我沒有得到輸出。

我被困在這裏任何幫助將不勝感激。

回答

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

@hemanthSorry其實我編輯的問題,可以ü請給我提供了一個解決方案。 – user2882721

+0

@ user2882721更新瞭解決方案 – hemanth

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' 
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

請參閱下面的代碼:

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

alert(str2); 

你是正確的,但你錯過了的indexOf做+3的一件事。 indexOf(「abc」)會返回0,這反過來又會給你thw整個字符串。

或者看看這個小提琴鏈接:

Working Fiddle

相關問題