正则表达式两个字符串变量

时间:2016-06-22 12:38:16

标签: javascript regex

说我有两个字符串变量:

a = 'LOVE';
b = '....';

如何使用正则表达式(或其他最快的结果)组合a + b来制作:

c = 'L.O.V.E.';

在我的情况下,两个字符串总是长4个字符,第二个字符串不是固定字符,我只是做了一个点,使它在屏幕上看起来更清晰。

6 个答案:

答案 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

&#13;
&#13;
var a = 'LOVE',
    b = '....';
    c = a.split('').reduce(function (r, v, i) {
        return r + v + b[i];
    }, '');

console.log(c);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如何通过正则表达式合并a + b

&#13;
&#13;
var a = "LOVE", b = "....";

var result = a.replace(/./g, (match, i) => match + b[i]);

console.log(result);
&#13;
&#13;
&#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)

您可以在数组上使用数组函数(在此示例字符串中)来迭代它的项目。

&#13;
&#13;
var a = 'LOVE',
  b = '....',
  c = Array.prototype.map
  .call(a, (v, i) => v + b[i]).join('');

console.log(c);
&#13;
&#13;
&#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))