编写替代String.prototype.replace()的函数

时间:2019-03-26 04:28:47

标签: javascript

我想编写一个函数以获取字符串,然后将给定值替换为给定字符 就像:

function(str, charToChange, charToReplace){}

我使用了String.prototype.replace()

还有其他方法吗? (例如使用循环) 内置功能,例如replacejoinsplit,...不应使用

var myStr = 't|e|s|t|1';
var newStr = myStr.replace(/\|/g, '');
console.log(newStr); //test1


var myStr = 'B1C1D1E1F';
var newStr = myStr.replace(/1/g, '');
console.log(newStr); //BCDEF

var myStr = 'Test*Num*One';
var newStr = myStr.replace(/\*/g, '');
console.log(newStr); //

3 个答案:

答案 0 :(得分:2)

使用for..in循环

function a(string, charToChange, charToReplace) {
  var str = '';
  for (let i in string)
    string[i] != charToChange ? str += string[i] : str += charToReplace;
  console.log(str)
}

a('Test*Num*One', '*', '')
a('t|e|s|t|1','|','')
a('B1C1D1E1F','1','')

使用splitjoin来达到相同的目的

var myStr = 't|e|s|t|1';
var newStr = myStr.split(/\|/g).join('');
console.log(newStr); //test1


var myStr = 'B1C1D1E1F';
var newStr = myStr.split(/1/g).join('');
console.log(newStr); //BCDEF

var myStr = 'Test*Num*One';
var newStr = myStr.split(/\*/g).join('');
console.log(newStr); //

答案 1 :(得分:1)

您可以创建一个自定义函数并分割字符串,这将创建一个数组,然后使用filter过滤掉不需要的字符。filter将创建另一个并使用{{1 }}加入新数组的元素

join

答案 2 :(得分:0)

    replaceString = function (str, charToChange, charToReplace) {
    	let newStr = '';
    	for (let i = 0; i < str.length; i++) {
    		if (str[i] == charToChange) {
    			if (charToReplace != '') {
    				newStr += charToReplace;
                }
            }
    		else {
    			newStr += str[i];
            }
        }
    	return newStr;
    }

    var myStr = 't|e|s|t|1';
    var newStr = replaceString(myStr, '|', '');
    console.log(newStr); //test1


    myStr = 'B1C1D1E1F';
    newStr = replaceString(myStr, '1', '');
    console.log(newStr); //BCDEF

    myStr = 'Test*Num*One';
    newStr = replaceString(myStr, '*', '');
    console.log(newStr); //

相关问题