2016-11-19 53 views
0

我在数据框中有一堆字符串,如下所示。如何使用javascript突出显示两个已知字符之间包含随机字符的子字符串?

   v1     v2 
ARSTNFGATTATNMGATGHTGNKGTEEFR SEQUENCE1 
BRCTNIGATGATNLGATGHTGNQGTEEFR SEQUENCE2 
ARSTNFGATTATNMGATGHTGNKGTEEFR SEQUENCE3 

我想搜索和亮点在V1列中的每个字符串中的一些选定的子串。例如,在子串假设第一个字母被搜索为“N”和最后一个字母为“G”,和中间的一个可以是任何字母如“N G”或“N G”或“N ç G” 或 “N d G” 等。以突出的三个字符的子如以下所示,我写26行代码中的R闪亮标签来显示假设有可能是任何的26个字母的“Ñ”和“ģ”之间。我只是试图优化代码。我是JS新手。希望我清楚。如果不是在投票前请让我知道你是否需要更多的解释或细节。

ARST NFG ATTAT NMG ATGHTG NKG TEEFR

BRCT NIG ATGAT NLG ATGHTG NQG TEEFR

ARST NFG ATTAT NMG ATGHTG NKG TEEFR

与26线I使用这里提供的代码的有代表性的2行(第一行和最后一行)的删节代码。

datatable(DF, options = list(rowCallback=JS("function(row,data) { 
    data[0] = data[0].replace(/NAG/g,'<span style=\"color:blue; font-weight:bold\">NAG</span>'); 
    ..... 
    data[0] = data[0].replace(/NZG/g, '<span style=\"color:blue; font-weight:bold\"\">NZG</span>'); 
    $('td:eq(0)', row).html(data[0]);}"), dom = 't')) 

回答

1

我发现了一个简单的解决方案。可能对像我这样的人有用。

datatable(DF, options = list(rowCallback = JS("function(row,data) { 
    data[0] = data[0].replace(/N[A-Z]G/g,'<span style=\"color:blue; font-weight:bold\">$&</span>'); 
    $('td:eq(0)', row).html(data[0]);}"), dom = 't')) 
2

我想你想要的正则表达式是:/ N [AZ] G /克

如果还希望它为小写工作:/ N [A-ZA-Z] G /克

+0

如何表示替换字符串? > NXG <。应该是> N [A-Za-z] G <? – RanonKahn

+0

替换字符串替换了正则表达式匹配的所有内容,所以你必须包含N和G以及你想要的任何内容。 –

相关问题