我的替换不适用于我的功能?

时间:2014-07-19 13:21:25

标签: javascript replace

var jtj_code_lines = []; // this array will hold all the jtj codes line

var JTJ = function(j){
     j = j.replace(" ",""); 
   jtj_code_lines = j.split(';'); // splitting all the lines seperated from  ;

   for(var i=0; i<jtj_code_lines.length; i++){

       if(jtj_code_lines[i].charAt(0) === '*'){ // * means that the following word is the name of a method that will perform some action
           var q1 =  jtj_code_lines[i].replace('*', ''),
           q1_pos_1 = q1.indexOf('['); // find the position of the keyword [
           var q1_funcname = q1.slice(0, q1_pos_1); // it find the name of that perticular function 

           if(q1_funcname === "Message"){  // this checks weather the function name is message
               var q1_pos_2 = q1.indexOf(']'), // this ifnds the position of keyword ]
               q1_func_value = q1.slice(q1_pos_1+1, q1_pos_2);  // this finds what is written inside [] and accepts as the value of Message 

               alert(q1_func_value);
           }else{

           }

       }
   }
};

所以上面的函数非常简单,它找到了用括号写的特定文本,我的意思是如果你写的话:

JTJ('*Message[hi];')

然后它会提醒hi并且这是简单的退出并且这是预期的警告但问题是,如果任何*在空白之后然后该特定的事情没有被警告,所以以下具有相同的条件,*Message[go ];以空格开头,因此不会被警告:

JTJ('*Message[sanmveg];*Message[saini]; *Message[go ];')  

但我有一行j = j.replace(" ","");删除所有空格,然后为什么它不起作用?还有其他办法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Fix: j = j.replace(/\s/gi,"");

这将删除所有“”和“”,简而言之,它将充当replaceAll。 在它刚刚用“”替换第一个匹配的“”之前。