如何在perl中重新构造字符串?
例如,考虑字符串“卢浮宫在哪里?”
如何生成如下字符串:
“这是卢浮宫的位置”这些被用作进行网络搜索的查询。
我试图做这样的事情:
摆脱标点符号并将句子分成单词 我的@words = split / /,$ _ [0];
我不需要字符串中的第一个单词,所以摆脱它。
移(@words);
然后我需要移动数组中的下一个字 - 不知道该怎么做!!
最后将单词数组转换回字符串。
答案 0 :(得分:1)
join
将每个排列数组合在一起形成一个字符串。答案 1 :(得分:1)
更冗长的例子:
use strict;
use warnings;
use Data::Dumper;
my $str = "Where is the Louvre located?";
# split into words and remove the punctuation
my @words = map {s/\W+//; $_} split / /, $str;
# remove the first two words while storing the second
my $moving = splice @words, 0 ,2;
# generate the variations
my @variants;
foreach my $position (0 .. $#words) {
my @temp = @words;
splice @temp, $position, 0, $moving;
push @variants, \@temp;
}
print Dumper(\@variants);
答案 2 :(得分:0)
my @head;
my ($x, @tail) = @words;
while (@tail) {
push @head, shift @tail;
print join " ", @head, $x, @tail;
};
或者你可以通过数组“冒泡”$ x:$ words [$ n-1]和words [$ n]
foreach $n (1..@words-1) {
($words[$n-1, $words[$n]) = ($words[$n], $words[$n-1]);
print join " ", @words, "\n";
};