2016-06-14 4 views
0

Я ищу строку ДНК-символов, ATCG. Возможно, я захочу искать AT, и поиск должен игнорировать ATAT, не найти два AT. Мне нужно знать, сколько AT, s есть в строке и их положение там. Я пробовал различные идеи, но до сих пор не удалось. Я использовал Середина, Содержит. Если кто-то может дать мне подсказку, я был бы благодарен. С уважениемVB.Net Поиск строки

+1

Добавьте код и пример данных, которые вы сейчас пытаетесь. Добавьте сообщение об ошибке или неверные результаты - компилируется ли ваш код? – dbmitch

ответ

0

Не чувак VB.NET (C# - мой текущий наркотик), но, к счастью, они похожи. Если вы не заботитесь о времени выполнения, вы можете просто переустановить его. Во-первых, если ваш шаблон встречается в строке на всех:

bool containsAT myDNAChars.Contains("AT"); 

Тогда вы можете идти о поиске позиции:

var myListOfMatches = new List<int>(); 
int searchIndex = 0; 
string pattern = "AT"; 
bool done = false; 
while(!done) 
{ 
    int atIndex = myDNAChars.IndexOf(pattern, searchIndex); 
    myListOfMatches.Add(atIndex); 
    searchIndex += pattern.Length; 
    if(searchIndex > myDNAChars.Length) 
    { 
     done = true; 
    } 
} 

После того, как у вас есть список совпадений, вы можете перемещаться по нему и отказаться от любых случаев «ATAT» или любых других шаблонов, которые вы не хотите.

Это не элегантно - это грубая сила - но она должна работать.

Извините, что C#, но его легко конвертировать в VB.NET.