输入是这样的:
0030 0110 0030 0210 0030 0310 0030 0410
0030 0510 0030 0610 0030 0710 0030 0810
我希望输出是这样的:
00 30 01 10 00 30 02 10 00 30 03 10 00 30 04 10 00 30 05 10 00 30 06 10 00 30 07 10 00 30 08 10
换句话说,我希望输出以一堆两位(十六进制)数字和仅一行分开。
我尝试了这个:
const REGEX_FIND_2 = /(\w{2}(?! |\n|\r))|(\n)|(\r)/g;
const REGEX_REPLACE_2 = "$1 ";
奇怪的是,它在
Sublime Text 3
中工作,但在JavaScript中,在行之间附加了一个这样的空格:00 30 01 10 00 30 02 10 00 30 03 10 00 30 04 10 00 30 05 10 00 30 06 10 00 30 07 10 00 30 08 10
请注意
04 10
和00 30
之间的多余空间。 最佳答案
您可以用单个空格代替换行符,然后在每对数字之间插入一个空格:
s = s.replace(/[\r\n]+/g, ' ').replace(/(\d{2})(\d{2})/g, "$1 $2");
参见JS演示:
var s = "0030 0110 0030 0210 0030 0310 0030 0410\r\n0030 0510 0030 0610 0030 0710 0030 0810";
console.log(s.replace(/[\r\n]+/g, ' ').replace(/(\d{2})(\d{2})/g, "$1 $2"));
如果您需要确保仅影响“整个单词”的4位数字块,请使用单词边界:
/\b(\d{2})(\d{2})\b/g
。