2016-11-19 55 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以及你想要的任何內容。 –

相關問題