JavaScript substr(),在字符串中间获取字符

时间:2014-09-22 09:18:46

标签: javascript string function substr

我有一个字符串,var str =“Runner,The(1999)”;

使用substr(),我需要查看str中是否包含“,The”,从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应该等于“The Runner(1999)”

请不要使用正则表达式或其他功能。我正在尝试学习如何使用substr。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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,所以就是这样。

答案 2 :(得分: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)获取""之前的字词。并a.substr(a.indexOf('The')+3)获取其后的文字。

答案 3 :(得分:0)

所以,你说解决方案应该仅限于substr 方法。 根据您的意思,将有不同的解决方案:

  

“,”从7个字符开始包含在str中

如果你的意思是在-7位置找到完全,那么代码看起来就像这样(我用-12替换-7,以便代码返回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和字符串结尾之间找到 where 的子字符串“,”,那么你真的需要使用 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;
    }
  }
}