2014-09-22 26 views
0

我有一個字符串,var str =「Runner,The(1999)」;JavaScript substr(),獲取字符串中間的字符

使用substr(),我需要看看是否包含在str中,從7個字符開始,如果是,則刪除這些字符並將它們放在起始位置。事情是這樣的:

if (str.substr(-7) === ', The') // If str has ', The' starting from 7 characters back... 
{ 
    str = 'The ' + str.substr(-7, 5); // Add 'The ' to the start of str and remove it from middle. 
} 

產生的STR應該等於 「的亞軍(1999年)」

請,沒有正則表達式或其他功能。我試圖學習如何使用substr。

回答

2

在這裏你走,只使用substr的要求:

var str = "Runner, The (1999)"; 

if(str.substr(-12, 5) === ', The') { 
    str = 'The ' + str.substr(0, str.length - 12) + str.substr(-7); 
} 

alert(str); 

Working JSFiddle

應當指出的是,這是不是達到你想要什麼是最好的方式(特別是使用硬編碼值像-7 - 幾乎從來沒有像使用lastIndexOf,正則表達式等等)。但是你想要substr,所以它就是這樣。

+0

這是我正在尋找的答案的類型,謝謝Shai傢伙! – 2014-09-22 10:43:48

1
var str = "Runner, The (1999)"; 
if(str.indexOf(", The") != -1) { 
    str = "The "+str.replace(", The",""); 
} 
+0

對不起,必須使用SUBSTR()只。此外,如果str =「The Runner,The Runner(1999)」,您的解決方案將不起作用。「我只能得到',The'的最後一個例子。 – 2014-09-22 09:33:43

+1

@GTSJoe:你可以使用'lastIndexOf()'並從該點刪除字符串 – mithunsatheesh 2014-09-22 09:34:56

0

如果你想只使用SUBSTR:

var a = "Runner, The (1999)" 
var newStr; 
if (str.substr(-7) === ', The') 
    newStr= 'The ' +a.substr(0,a.length-a.indexOf('The')-4) + a.substr(a.indexOf('The')+3) 

使用a.substr(0,a.length-a.indexOf('The')-4)獲得單詞 「The」 和a.substr(a.indexOf('The')+3)之前之後獲得的話。

0

所以,你說的解決方案應該是只限於substr方法。 會有這取決於你的意思是由什麼不同的解決方案:

「該」包含在STR從7個字符後面

開始。如果你的意思是它的發現正好在-7位置,那麼代碼看起來是這樣的(我換成-7與-12,從而使代碼返回TRUE):

function one() { 
    var a = "Runner, The (1999)"; 
    var b = ", The"; 
    var c = a.substr(-12, b.length); 
    if (c == b) { 
    a = "The " + a.substr(0, a.length - 12) + 
    a.substr(a.length - 12 + b.length); 
    } 
} 

然而,如果串「該」可以發現位置-7和字符串的結尾之間的任何地方,你真的需要使用 SUBSTR,然後檢查了這一點:

function two() { 
    var a = "Runner, The (1999)"; 
    var b = ", The"; 
    for (var i = a.length - 12; i < a.length - b.length; i++) { 
    if (a.substr(i, b.length) == b) { 
     a = "The " + a.substr(0, i) + a.substr(i + b.length); 
     break; 
    } 
    } 
}