2014-12-02 178 views
-1

我想写一个函数,其中的参数是一个字符串和特定的字符需要被替换。然后它会给出一个带有转换字符串的警告框。替换多字符

我有以下代码,但它不工作。我也想把它转换成alert()转换后的字符串。

function encryption(aString){ 
    return aString.replace(/a/g, '@') 
     .replace(/e/g, '()') 
     .replace(/h/g, '#') 
     .replace(/l/g,'1') 
     .replace(/r/g,'+') 
     .replace(/s/g.'$') 
     .replace(/v/g,'^') 
     .replace(/x/g,'*'); 
} 
+0

您是否在JavaScript控制台中看到任何错误?错字应该导致语法错误。 – 2014-12-02 01:12:37

回答

1

乍一看我在这里看到

.replace(/s/g.'$') 

一个错字应该

.replace(/s/g,'$') 

你可以看到它固定错字后工作here

+0

漂亮的眼睛!谢谢!当我通过我的网页运行时,即使修复了编辑,也没有任何反应。 '函数加密(aString)替换(/ e/g,'()')。replace(/ h/g,'')函数加密(aString)\t \t \t \t \t \t返回aString.replace(/ a/g,'@') ').replace(/升/克,' 1 ')。代替(/ R/G,' + ')。代替(/ S/G,' $ ')。代替(/ v/G,' ^') .replace(/ X /克, '*'); \t \t \t \t \t \t alert(aString);}' – Robben 2014-12-02 01:15:52

+0

@Robben'return()'后的'alert()'不会被执行。 – 2014-12-02 01:16:59

+0

@Robben - 当传递给'encryption()'时,''aString'不会被修改 - 您想警告函数调用的_return value_,而不是原始字符串:alert(encryption(aString)),就像Claudio's小提琴。 – 2014-12-02 01:17:42

1

有两个问题这里:

.replace(/s/g.'$') 

周期应该是一个逗号,而$字符用于替换字符串替换代码,所以你要逃避它作为$$

.replace(/s/g, '$$') 

您可以使用一个替代而不是链接所有这些替代对象:

function encryption(aString){ 
 
    return aString.replace(/[aehlrsvx]/g, function (m) { 
 
    return m == 'e' ? '()' : '@#1+$^*'['ahlrsvx'.indexOf(m)]; 
 
    }); 
 
} 
 

 
// display result in StackOverflow snippet 
 
document.write(encryption('The quick brown fox jumps over the lazy brown dog.'));

+0

如果它是替换字符串中唯一的字符,则不需要转义“$”。至少,这正是Safari所暗示的。 – 2014-12-02 01:14:44

+0

非常感谢! – Robben 2014-12-02 01:23:50

+0

另外罗本,整个脚本可以更简单,如果你只用一个字符来代替'e' – 2014-12-02 01:52:11