2017-02-17 34 views
4

我与javasctipt长字符串替代的工作,我有,我不能用str.replace(/substr/g,'new string'),不允许更换,以取代我不能预先确定的长度和值,子一个子串,我可以确定它的开始位置和长度。使用Javascript - PHP的SUBSTR()JavaScript的

有没有我可以使用像string substr (string, start_pos, length, newstring)的功能?

回答

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'));

+0

我要与其他charachters –

+1

@BelgacemKsiksi更换:更新 –

1

在JavaScript中你有substrsubstring

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

它们的区别在第二个参数。对于substr是长度(像你问的一个)和substring是最后一个索引位置。你不要求第二个,但只是为了记录它。

+0

反正是有他们使用用其他字符替换一个或多个字符? –

+0

是的,您必须将子串绑定到所需的索引并将其连接到下一个索引。其实,这个答案是相当不错的:http://stackoverflow.com/a/42300623/1525495 –

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"));

+0

这是不行的,如果'newStr'参数没有通过:'的console.log(customReplace(STR,2,5) );''给abundefinedfghijkl' – RomanPerekhrest

+0

@RomanPerekhrest如果'newStr'不过去了那么什么是函数本身的意义呢? –

+0

你应该考虑这个条件来得到一个更统一的解决方案 – RomanPerekhrest