【发布时间】:2014-08-05 02:08:43
【问题描述】:
我想将 A 列中的字符串与 B 列中每一行的字符串进行比较,并打印第三列突出显示差异。
Column A Column B
uuaaugcuaauugugauaggggu uuaaugcuaauugugauaggggu
uuaaugcuaauugugauagggguu uuaaugcuaauugugauaggggu
uuaaugcuaauugugauagggguuu uuaaugcuaauugugauaggggu
期望的结果:
Column A Column B Column C
uuaaugcuaauugugauaggggu uuaaugcuaauugugauaggggu ********************
uuaaugcuaauugugauagggguu uuaaugcuaauugugauaggggu ********************u
uuaaugcuaauugugauagggguuu uuaaugcuaauugugauaggggu ********************uu
我有一个可能有效的示例脚本,但我该如何对数据框中的每一行执行此操作?
use strict;
use warnings;
my $string1 = 'AAABBBBBCCCCCDDDDD';
my $string2 = 'AEABBBBBCCECCDDDDD';
my $result = '';
for(0 .. length($string1)) {
my $char = substr($string2, $_, 1);
if($char ne substr($string1, $_, 1)) {
$result .= "**$char**";
} else {
$result .= $char;
}
}
print $result;
【问题讨论】:
-
有一个难以想象的问题“突出差异的第三列”。如果前两列是
ABC和ABD,那么“区别”将是第一列在第三个位置有C,而第一列有D。除非第二个字符串总是以第一个字符串的内容开头,否则很难用一个字符串来表达这种差异,你应该说出你需要的内容。 -
假设第一列包含
uuaaug,第二列包含gggacc,第三列希望看到什么?
标签: perl string-matching