gpt4 book ai didi

perl - 如何在 Perl 中反转句子中的单词?

转载 作者:行者123 更新时间:2023-12-03 15:34:55 25 4
gpt4 key购买 nike

我正在尝试使用此代码反转一串单词。

use strict;
use warnings;

print "please enter words to reverse:\n";
my $string = <STDIN>;
chomp $string;

my $rstring = reverse $string;

print "$rstring\n";

例如,当我输入 one two three ,反向词应该是 three two one .但我实际上得到了 eerht owt eno .

为什么会这样?

最佳答案

计算机不知道单词是什么。当您调用 reverse 在字符串上,它将翻转所有字符。但是reverse还允许您翻阅事物列表,这在您的上下文中更有意义。

In list context, returns a list value consisting of the elements of LIST in the opposite order. In scalar context, concatenates the elements of LIST and returns a string value with all characters in the opposite order.



你需要把你的单词串变成单词列表,然后把它转过来,然后再把它变成一个字符串。

如果您查看您的字符串,您会注意到单词被空格分隔。
   V   V
one two three

您可以 split 将字符串放到这些空格上的数组中。请注意 split将模式作为分隔符。
my @words = split / /, $string;

现在你有一个单词数组。
( 'one', 'two', 'three' )

当你 reverse那,它会对元素做它,而不是它们里面的每个字符串,所以你得到
my @words = reverse split / /, $string;
# ( 'three', 'two', 'one' )

最后,如果你想把空格放回去,使用 split 的反义词。至 join 再次将列表转换为字符串。
print join ' ', reverse split / /, $string;
# three two one

关于perl - 如何在 Perl 中反转句子中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62343650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com