Я ищу строку ДНК-символов, ATCG. Возможно, я захочу искать AT, и поиск должен игнорировать ATAT, не найти два AT. Мне нужно знать, сколько AT, s есть в строке и их положение там. Я пробовал различные идеи, но до сих пор не удалось. Я использовал Середина, Содержит. Если кто-то может дать мне подсказку, я был бы благодарен. С уважениемVB.Net Поиск строки
0
A
ответ
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.
Добавьте код и пример данных, которые вы сейчас пытаетесь. Добавьте сообщение об ошибке или неверные результаты - компилируется ли ваш код? – dbmitch