在Perl中,如何从双引号中除去字符串中的空格,并用||替换这些引号?

la.*_*a.c 2 regex perl

我试图找到一种方法用管道(||)替换空格和双引号,同时保持双引号内的空格不变.

例如,它会将"word"字词"word"改为"word || word word || word",将"word word word"改为"word || word || word".

现在我有这个工作:

[%- MACRO typestrip(value) PERL -%]
my $htmlVal = $stash->get('value');
$htmlVal =~ s/"/||/g;
print $htmlVal
[%- END -%]
Run Code Online (Sandbox Code Playgroud)

哪个处理用管道替换双引号就好了.

我不知道这应该是多么简单或复杂,或者甚至可以做到,因为我没有编程的实际背景,虽然我曾经使用过一些Perl,但它以前从来没有这样,所以我道歉如果我我没有很好地解释这一点.

Joe*_*ger 9

我认为使用核心模块Text::ParseWords拆分非引用的空格可能更容易,然后用管道重新加入"单词".

#!/usr/bin/env perl

use warnings;
use strict;

use Text::ParseWords;

while (my $line = <DATA>) {
  print space2pipes($line); 
  print "\n";
}

sub space2pipes {
  my $line = shift;
  chomp $line;
  my @words = parse_line( qr/\s+/, 0, $line );
  return join '||', @words;
}

__DATA__
word "word word" word
word word word
Run Code Online (Sandbox Code Playgroud)

把它放到你的模板引擎中留给读者练习:-)