- 论坛徽章:
- 1
|
请教~去除首末字符 thanks~
我不懂生化方面的東西...
你可以試試看...基本上連續相同四個,程式才會認為起始點與終止點有效,
不然你沒辦法知道開頭到底幾個不要....
你可以改$limit的數字成你要的數字..就好了...
剛剛我又作了點修正,把counter歸0
- #!/usr/bin/perl
- $a="CGGACAACAGCGGACTCCGAGACCAGTGGATCTCGGCAAACCTGA";
- $b="CGCCCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACCGAT";
- #$a="CGGCAGGTGTTGGGGGCGCAGAGGCGGCGAG";
- #$b="CGGCAGGTGTTGGGGGAGCGCAGGCAGCGAG";
- #---設定至少匹配幾個後,才認為是前面或後面相同的字符
- $limit = 4;
- #---設定起始點
- $start_flag = 99999999;
- #---設定終止點
- $end_flag = 99999999;
- #--找出起始點,連續匹配$limit個才認為起始點有效
- for($i=0;$i<length($a);$i++){
- $c=substr($a,$i,1);
- $d=substr($b,$i,1);
- if($c eq $d){
- $counter++;
- if($start_flag == 99999999){
- $start_flag=$i;
- }
- } else { $counter=0;$start_flag =99999999;}
- last if($counter ==$limit);
- }
- print "Start INDEX :$start_flag\n";
- print "-----------------------\n";
- $counter =0;
- #--找出終止點,連續匹配$limit個才認為終止點有效
- for($i=length($a)-1;$i>;=0;$i--){
- $c=substr($a,$i,1);
- $d=substr($b,$i,1);
- if($c eq $d){
- $counter++;
- if($end_flag == 99999999){
- $end_flag=$i;
- }
- } else { $counter=0;$end_flag =99999999;}
- if($counter ==$limit){
- last;
- }
- }
- print "END INDEX :$end_flag\n";
- $result = substr($b,$start_flag,($end_flag-$start_flag)+1);
- print "$a\n";
- print "$b\n";
- print "$result\n";
复制代码 |
|