繁体   English   中英

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

[英]JavaScript substr(), Get Characters in the Middle of the String

我有一个字符串,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。

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

在这里,仅按要求使用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);

工作中的JSFiddle

应当指出,这不是实现所需目标的最佳方法(尤其是使用像-7这样的硬编码值–几乎从来没有像使用lastIndexOf ,regex等之类的东西那样好)。 但是您想要substr ,所以就可以了。

如果您只想使用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)获得单词之后。

因此,您说解决方案应仅限于substr方法。 根据您的意思会有不同的解决方案:

“,The”包含在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);
  }
}

但是,如果子字符串“,The”可以在位置-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;
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM