纠结 怀疑自己不会写代码了 各位大佬江湖救急

最近在工作中总是遇到一些关于扩展的问题 问题的产生都是开始写代码时没有考虑同类型扩展而遗留下来的
比如

// 一开始的需求是过滤字符串中的"["与"]"两个符号
var str = '[asdasdasdas[asdasdasd]asdasdasdas[asdasdas]asdasd[asd]]';
// 很简单 写个函数过滤掉
function fillterStr(data){
   // data为传进来的字符串
   ...  // 过滤逻辑 最终得出过滤后的data并返还
   return data
}
// 调用也很简单
str = fillterStr(str);


// 过了一段时间发现还需要过滤字符串内的"{"与"}"两个字符
var str = '[asdasdasdas[asdas{dasd]asdas}dasd{as[asdasdas]asd}asd[asd]]';
// 好依然很简单   再写一个函数
function fillterBracketsStr(data) {
   // data为传进来的字符串
   ...  // 过滤逻辑 最终得出过滤后的data并返还
   return data
}
// 调用就有些啰嗦了
str = fillterBracketsStr(fillterStr(str));
// 亦或者这样
str = fillterStr(str);
str = fillterBracketsStr(str);
// 长此以往  真是个可悲的代码


//我可以这样
var str = '[asdasdasdas[asdas{dasd]asdas}dasd{as[asdasdas]asd}asd[asd]]';

function strObj(str) {
    this.str = str;
}
strObj.prototype = {
    fillterBracketsStr: fillterBracketsStr() {
       // data为传进来的字符串
       var data = this.str;
       ...  // 过滤逻辑 最终得出过滤后的data并返还
       this.str = data;
       return this;
    },
    fillterStr: function () {
       // data为传进来的字符串
       var data = this.str;
       ...  // 过滤逻辑 最终得出过滤后的data并返还
       this.str = data;
       return this;
    }
}
str = new strObj(str).fillterBracketsStr().fillterStr().str

我只是会喊666的小前端 生活为什么要这样对我

阅读 1.8k
2 个回答

用正则将字符替换为空,比较麻烦的是特殊字符要在前面加两个反斜杠

var str = '[asdasdasdas[asdas{dasd]asdas}dasd{as[asdasdas]asd}asd[asd]]';
var arr = ["\\[","\\]","\\{","\\}"];
$.each(arr, function(i, item){      
    str = str.replace(new RegExp(item,"g"), '');      
});
return str;

需要过滤什么字符,直接往arr里面加就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题