说我有两个字符串变量:
a = 'LOVE';
b = '....';
如何使用正则表达式(或其他最快的结果)组合a + b来制作:
c = 'L.O.V.E.';
在我的情况下,两个字符串总是长4个字符,第二个字符串不是固定字符,我只是做了一个点,使它在屏幕上看起来更清晰。
答案 0 :(得分:10)
您可以简单地遍历较长的字符串,并在每次迭代中将两个字符串中的一个字符追加到结果字符串中。我认为你不需要任何正则表达式:
a = 'LOVE';
b = '....';
var combinedString = '';
var largerLength = Math.max( a.length, b.length );
for( var i = 0; i < largerLength; i++ )
{
combinedString += a.charAt(i) + b.charAt(i);
}//for()
console.log( combinedString );
以上代码适用于任何长度的字符串。如果您事先知道这两个字符串长度恰好是4个字符,我认为最快最有效的方法是:
a = 'LOVE';
b = '....';
var combinedString = a.charAt[0] + b.charAt[0] + a.charAt[1] + b.charAt[1] + a.charAt[2] + b.charAt[2] + a.charAt[3] + b.charAt[3];
console.log( combinedString );
答案 1 :(得分:6)
您可以使用Array#reduce
var a = 'LOVE',
b = '....';
c = a.split('').reduce(function (r, v, i) {
return r + v + b[i];
}, '');
console.log(c);
&#13;
答案 2 :(得分:1)
如何通过正则表达式合并a
+ b
:
var a = "LOVE", b = "....";
var result = a.replace(/./g, (match, i) => match + b[i]);
console.log(result);
&#13;
答案 3 :(得分:0)
您的问题不需要正则表达式。您可以在for循环
的帮助下完成a = 'LOVE';
b = '....';
var result = '';
var length = Math.max( a.length, b.length );
for( var i = 0; i <+ length-1; i++ )
{
result = result + a.charAt(i);
result = result + b.charAt(i);
}
alert("Result of combined string is :"+ result);
答案 4 :(得分:0)
您可以在数组上使用数组函数(在此示例字符串中)来迭代它的项目。
var a = 'LOVE',
b = '....',
c = Array.prototype.map
.call(a, (v, i) => v + b[i]).join('');
console.log(c);
&#13;
答案 5 :(得分:-2)
如果您的第二个字符串始终由dots
组成,而不是在字符串中重复相同的字符,请尝试以下操作:
var a = "LOVE";
var delimeter = ".";
var result = a.split("").join(delimeter) + delimeter;
console.log(result)
作为string.charAt
的替代品,你可以尝试这样的事情:
注意:对于可能未定义值的情况,您应该a1[i] || ""
。此外,您应该使用.toString()
来避免两个值都是数字并且结果将是加法而不是连接的情况。
var a = 'LOVE';
var b = '....';
var c = ",,,,,,,,,,,";
function mergeStr(a, b) {
var a1 = a.split("");
var b1 = b.split("");
var len = Math.max(a.length, b.length)
var r = "";
for (var i = 0; i < len; i++) {
r += (a1[i] || "").toString() + (b1[i] || "").toString();
}
return r;
}
console.log(mergeStr(a,b))
console.log(mergeStr(a,c))