-1

我想colormanagemnet从用户定义的特殊字符中更改字符串,如下所示:

c!o@l#o$r$m%a^n&a*g?e(m)e@n!t

使用 JavaScript 或 jQuery。

<script type="text/javascript">
var sc = "!@#$%^&*()?"
var txt = "colormanagemnet";

// dont know how to concat like this 

</script>
4

2 回答 2

1

首先,您可以拆分每个变量

sc.split("")

=> ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "?"]

txt.split("")

=>["c", "o", "l", "o", "r", "m", "a", "n", "a", "g", "e", "m", "n", "e", "t"]

现在您可以运行 . 的每个字符txt并与 . 的每个字符连接sc。如果您有不同数量的元素,您可以执行以下操作:

for(...){
   final = final + char_from_txt[i] + char_from_sc[i % sc_length];
}
于 2012-05-11T12:07:19.063 回答
0

如果需要,这个可以处理不均匀的长度和垫子

演示

var sc = "!@#$%^&*()?"
var txt = "colormanagemnet";
var newstr ="";

最优雅的是将 charAt 与 Tiago 的余数方法一起使用:

for (var i=0,n=txt.length; i< n; i++) {
  newstr += txt.charAt(i)+sc.charAt(i % sc.length);
}    

这是一个带有填充的,测试最长的字符串:

for (var i=0,n=Math.max(txt.length,sc.length); i< n; i++) {
  var char1 = txt.length>i?txt.charAt(i):"-"; // remove - if no padding
  var char2 = sc.length>i?sc.charAt(i):"~";  // remove ~ if no padding
  newstr += char1+char2;
}
alert(newstr);
于 2012-05-11T12:33:20.367 回答