JavaScript - JavaScript的Substr()替代方案

5

我正在使用JavaScript处理一个长字符串,并且需要替换子字符串,但我无法预先确定它们的长度和值,因此不能使用str.replace(/substr/g,'new string'),它不能替换我只能确定其起始位置和长度的子字符串。

是否有一种函数可以像string substr (string, start_pos, length, newstring)这样使用?

3个回答

4
您可以使用substr和连接符+的组合,如下所示:

function customReplace(str, start, end, newStr) {
  return str.substr(0, start) + newStr + str.substr(end);
}


var str = "abcdefghijkl";

console.log(customReplace(str, 2, 5, "hhhhhh"));


如果没有传递newStr参数,那么这将无法工作:console.log(customReplace(str, 2, 5)); 得到的输出为 abundefinedfghijkl - RomanPerekhrest
@RomanPerekhrest 如果没有传递 newStr,那么这个函数本身有什么意义呢? - ibrahim mahrir
你应该考虑这个条件,以获得更加统一的解决方案。 - RomanPerekhrest

2

没有内置函数可以根据索引和长度替换新内容。扩展字符串的原型(或者简单地定义为一个函数),并使用String#substr方法生成字符串。

String.prototype.customSubstr = function(start, length, newStr = '') {
  return this.substr(0, start) + newStr + this.substr(start + length);
}

console.log('string'.customSubstr(2, 3, 'abc'));

// using simple function
function customSubstr(string, start, length, newStr = '') {
  return string.substr(0, start) + newStr + string.substr(start + length);
}

console.log(customSubstr('string', 2, 3, 'abc'));


我想用其他字符替换。 - Belgacem Ksiksi

2
在JavaScript中,你有substrsubstring

var str = "mystr";
console.log(str.substr(1, 2));
console.log(str.substring(1, 2));

它们在第二个参数上不同。 对于 substr 是长度(就像你提出的那个问题),而对于 substring 是最后一个索引位置。 虽然您没有要求第二种方法,但需要记录它。


有没有办法使用它们来替换字符串或字符为其他的? - Belgacem Ksiksi
是的,您必须对要截取的索引进行子字符串操作,并将其连接到下一个字符串。实际上,这个答案非常好:https://dev59.com/6J_ha4cB1Zd3GeqPvj-I#42300623 - Jorge Fuentes González

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接