2016-11-16 2 views
-1

Я хочу найти все строки в тексте с WatiN. Я могу найти первую строку, но я не могу собрать все из них. Например, я хочу найти все вхождения «вода» в этом тексте:Найти строку в тексте несколько раз и делать действия каждый раз

На земле много воды. Но не вся вода питьевая.

Итак, здесь я должен найти 2 «воды». Мой код только находит первый. Как я могу найти их обоих?

Мой код:

IE ie = new IE("http://examplesite.com"); 

Element test = ie.Table(Find.ByClass("dataTable")).Element("td"); 

ie.TableRow(Find.ByText(t => t.Contains("example string"))).TextField(Find.ByName("examplename")).Button(Find.ByValue("example value")).Click(); 

ie.WaitForComplete(); 
Console.WriteLine("finished"); 

ответ

1

Вы можете использовать IndexOf в цикле, чтобы найти несколько вхождений подстроки.

const string haystack = "there are lots of water in the earth. but all of water arent drinkble."; 
const string needle = "water"; 

var startIndex = -1; 
while ((startIndex = haystack.IndexOf(needle, startIndex + 1)) > -1) 
{ 
    Console.WriteLine("Found {0} at {1}", needle, startIndex); 
} 
0

Разделите строку, затем возьмите все записи, содержащие то, что вы ищете.

var sentence = "There is a lot of water on earth. But not all water is drinkable." 
var parts = sentence.Split(' '); 
var words = parts.Where(p => p == "water"); 
+0

Или просто сделайте 'parts.Count (p => p ==" water ")'. Наличие списка, в котором все предметы являются «водой», не кажется очень полезным. – Berend

+0

Оригинальный вопрос довольно расплывчатый о том, почему он хочет это сделать. Я понятия не имею, что полезно для него или нет. –

+0

да, я думаю, что это было не полезно (еще не пробовал код ur), я хочу найти несколько элементов с таким же именем. и изменить все значения thire. например, я хочу найти все текстовые поля с идентификатором «test» и изменить значение there на что-то другое. – behzad

Смежные вопросы