假设我的长度为3的倍数。
my $seq = "CTTCGAATT"; # in this case length of 9
有没有办法可以将它分成3等长? 这样我最终得到了这个数组:
$VAR = ["CTT", "CGA", "ATT"];
答案 0 :(得分:14)
在How can I split a string into chunks of two characters each in Perl?
处查看解决方案特别是unpack
可能很有趣:
my @codons = unpack("(A3)*", $seq);
答案 1 :(得分:3)
使用substr
迭代超过三的倍数,将push
的碎片放入列表中。
答案 2 :(得分:2)
my $str = join '', map { ('A','T','C','G')[ rand 4 ] } 0 .. 900 ; # Random string
my @codons = $str =~ /[ACTG]{3}/g; # Process in chunks of three
# '/g' flag necessary
print 'Size of @codons array : ',
scalar @codons; # '300'
答案 3 :(得分:1)
my $str='ABCDEFGHIJKLM';
我们可以使用字符串匹配从字符串中获取部分,其中最小长度为1,最大长度为所需长度,即3或4或其他任何值
@parts = $str =~ /(.{1,4})/g;
,我们得到@parts = ['ABCD', 'EFGH', 'IJKL', 'M']