【问题标题】:perl - split string into 2-character groups [duplicate]perl - 将字符串拆分为 2 个字符组 [重复]
【发布时间】:2011-08-28 21:24:35
【问题描述】:

可能重复:
How can I split a string into chunks of two characters each in Perl?

我想将一个字符串拆分成一个数组,按 2 个字符对其进行分组:

  $input = "DEADBEEF";
  @output = split(/(..)/,$input);

这种方法会产生所有其他元素为空。

  $VAR1 = '';
  $VAR2 = 'DE';
  $VAR3 = '';
  $VAR4 = 'AD';
  $VAR5 = '';
  $VAR6 = 'BE';
  $VAR7 = '';
  $VAR8 = 'EF';

如何得到一个连续的数组?

  $VAR1 = 'DE';
  $VAR2 = 'AD';
  $VAR3 = 'BE';
  $VAR4 = 'EF';

(...除了获取第一个结果并删除每隔一行...)

【问题讨论】:

  • 谢谢,Ed - 这可能是正确的解决方案,请随时关闭问题。
  • 我在链接的帖子中为您添加了答案。

标签: regex perl split text-processing


【解决方案1】:

您可以使用以下方法轻松过滤掉空条目:

@output = grep { /.+/ } @output ;

编辑: 您可以更轻松地获得相同的东西:

$input = "DEADBEEF";
my @output = ( $input =~ m/.{2}/g );

编辑 2 另一个版本:

$input = "DEADBEEF";
my @output = unpack("(A2)*", $input);

问候

【讨论】:

  • a2,而不是 A2。后者去除尾随空格,这充其量是多余的。
【解决方案2】:

试试这个:

$input = "DEADBEEF";
@output = ();

while ($input =~ /(.{2})/g) {
  push @output, $1;
}

【讨论】:

  • 添加 /s 标志,否则将跳过换行符(以及它们之前的奇数字符)
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2019-04-02
  • 2012-09-11
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
相关资源
最近更新 更多