【问题标题】:Using index to extract substring from an array in perl在perl中使用索引从数组中提取子字符串
【发布时间】:2013-07-12 20:42:47
【问题描述】:

我想使用 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

【问题讨论】:

  • 我不太确定我是否理解你。您能否显示您尝试但未按预期工作的代码?实际示例数据(而不是对此数据的描述)加上预期输出也会有所帮助。

标签: arrays perl indexing extract


【解决方案1】:

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

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

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

substr $string, $offset, $length;

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多