使用正则表达式合并两行数字吗?

时间:2018-12-19 16:24:44

标签: regex

我有两行数字。如何获取下线编号并将其添加到上线编号的末尾。数字之间也应该有^-个字符。

2 2 2 2  
0 6 12 18

它应该像这样:

2^0 2^6 2^12 2^18

3 个答案:

答案 0 :(得分:0)

假设您的所有行正好包含4个数字,则可以使用以下匹配/替换:

match         (\d+) (\d+) (\d+) (\d+)\R(\d+) (\d+) (\d+) (\d+)
replace by    \1^\5 \2^\6 \3^\7 \4^\8

这将匹配两行,分别在它们自己的捕获组中捕获8个数字,然后用由8个数字构成的一行替换这两行。

如果每行上的数字量可以变化,那么使用正则表达式就无法解决这个问题。

Try it here

答案 1 :(得分:0)

var nums1 = new[] { 2, 2, 2, 2 };
var nums2 = new[] { 0, 6, 12, 18 };
var s = nums1.Zip(nums2, (x1, x2) => $"{x1}^{x2}");
s.ToList().ForEach(WriteLine);

相同的逻辑可以适用于字符串。

答案 2 :(得分:0)

正则表达式过大,如果需要将其用作字符串,请使用split()map()join()之类的数组方法。

演示

// If the inputs are strings
var dos = '2, 2, 2, 2';
var seis = '0, 6, 12, 18';

// split() will break a string intoan array
var two = dos.split(', ');
var six = seis.split(', ');

// map() will run a function on each element of an array
var twoSix = two.map(function(t, i) {
  return t + '^' + six[i];
});

// join() will connect all of an array's elements into a string
var str = twoSix.join(', ');

// This is to display better in console
var arr = JSON.stringify(twoSix);

console.log('An array: ' + arr + ' ...');
console.log('... or a string: ' + str);