0

我想使用 perl 从一个数组中提取 30 个字符的子字符串,使用另一个包含索引的数组,我希望每行的子字符串开始。例如,第 1 行从位置 21 开始提取 30 个字符,第 2 行从 5 开始,第 3 行......等等。这可能吗?我知道使用固定索引很容易做到,但我从未尝试过使用存储在单独数组中的索引。非常感谢。

例如,在我的例子中,数组 1 将由字符串组成:

ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT
TGATTTGTGTAAGCCTGAAAAGGTAAACAAACAATCTCAACGATCTCGACAATCCCGACAATCCCTCTTTACCAACACCATTAAGCCTCAAAAAGACAAGA
TGAATATTAAAACAAATAAAATAAAAGAGTTTTTAAATGACCTTTTTACTGAATTTTCTAAATTCCACAATAGCTATTATCCTAATGGAAGAATTTCTACT
CAGGACAAATCTCGATGGGTCTTGCTTATTATTTGGTCTATTATCACTATTTTAACAATAGACAAGAAATTTAAAATAAAAGAGTCATATTTAGAATGGAT
AGGTGAAAATCAGTCCCACAGTGAAATTTGGGGGCCTATTGTTATTTATGTTGGCTTATTCATACTCTTATTGTCTGCTTTTAACTGTACGTTTCCTTCAC

数组二由我想开始的索引组成,我从中提取的每个 30 字符子字符串,例如

21
32
15
7
17

留下一个输出:

AAAAAACAGGTTGAACCTCCTGGTTACAAT
AATCTCAACGATCTCGACAATCCCGACAAT
ATAAAATAAAAGAGTTTTTAAATGACCTTT
AATCTCGATGGGTCTTGCTTATTATTTGGT
CAGTGAAATTTGGGGGCCTATTGTTATTTA
4

1 回答 1

2

假设我们有一个字符串和一个偏移量:

my $string = "ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT";
my $offset = 21;
my $length = 30;

然后我们可以得到所需的子字符串,如

substr $string, $offset, $length;

但是如果我们有一个数组@strings和一个对应的数组@offsets,那么对于第i个元素,我们有:

substr $strings[$i], $offsets[$i], $length;

当我们遍历数组 ( 0 .. $#strings) 的所有索引时,我们可以获得每个子字符串。

于 2013-07-12T21:29:41.087 回答