争夺一个字符串Perl

时间:2015-03-17 14:02:14

标签: perl substring reverse

我正在使用子串和反向来加扰字符串。但是我的解决方案很难编写,而且必须有更顺畅的方式。据称这应该能够使用子串和反向只使用两个变量?但是怎么样?子字符串只删除我想要的字母,并丢弃字符串的其余部分。感谢任何意见。

#!/usr/bin/perl
$string = mystring;
$name = substr($string, 0, 2);
$name = reverse($name);
$name1 = substr($string, 2, 4);
$name2 = substr($string, 6, 8);
$name2 = reverse($name2);
print uc($name);
print uc($name1);
print uc($name2);

3 个答案:

答案 0 :(得分:1)

您可以使用shuffle()中的List::Util功能。

use strict; 
use warnings; 

use List::Util qw(shuffle);

my $string = 'mystring';
my $shuffled_string = join '', shuffle(split //, $string);
# 'nmyisgrt'

答案 1 :(得分:0)

我做:

my $string = 'mystring';
$string =~ s/^(..)(....)(.+)$/reverse($1) . $2 . reverse($3)/e;
print uc($string),"\n";

<强>输出:

YMSTRIGN

我们用前两个字符替换原始字符串,后面的4个字符保持不变,其余字符也相反。

答案 2 :(得分:-1)

#!/usr/bin/env perl

use strict;
use warnings;

my $string = 'My string is a good string';

for my $i (0 .. length($string)/2) {
    substr($string, $i * 2, 2) = uc reverse substr($string, $i * 2, 2);
}

print "$string\n";

输出:

YMS RTNI GSIA G OO DTSIRGN