2014-09-22 45 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; 
    } 
    } 
}