2013-05-23 6 views
0

У меня проблема с C#.Перемещение текстового файла с C#

Я пишу код для поиска текстового файла до тех пор, пока он не найдет определенное слово, тогда код должен переместить три строки и прочитать четвертый, а затем продолжить поиск, чтобы снова найти определенное слово. Теперь я не знаю, как перемещаться по файлу (вперед и назад) к строке, которую я хочу.

Может ли кто-нибудь помочь?

ответ

1

Вы можете сделать что-то вроде этого:

var text = File.ReadAllLines("path"); //read all lines into an array 
var foundFirstTime = false; 
for (int i = 0; i < text.Length; i++) 
{ 
    //Find the word the first time 
    if(!foundFirstTime && text[i].Contains("word")) 
    { 
     //Skip 3 lines - and continue 
     i = Math.Min(i+3, text.Length-1); 
     foundFirstTime = true; 
    } 

    if(foundFirstTime && text[i].Contains("word")) 
    { 
     //Do whatever! 
    } 
} 
+0

спасибо, что это сработало хорошо – Bari

0
// read file 
List<string> query = (from lines in File.ReadLines(this.Location.FullName, System.Text.Encoding.UTF8) 
        select lines).ToList<string>(); 

for (int i = 0; i < query.Count; i++) 
{ 
    if (query[i].Contains("TextYouWant")) 
    { 
     i = i + 3; 
    } 
} 
+1

Не рекомендуется читать файл целиком, если вам не гарантировано, что он находится под определенным размером. –

0

Вашего требования состояния, что вы ищете конкретное слово. Если это правда, и вы не ищете определенную строку, тогда проверенный ответ на это неверен. Вместо этого вы должны использовать:

string[] lines = System.IO.File.ReadAllLines("File.txt"); 

int skip = 3; 

string word = "foo"; 

string pattern = string.Format("\\b{0}\\b", word); 

for (int i = 0; i < lines.Count(); i++) 
{ 
    var match = System.Text.RegularExpressions.Regex.IsMatch(lines[i], pattern); 

    System.Diagnostics.Debug.Print(string.Format("Line {0}: {1}", Array.IndexOf(lines, lines[i], i) + 1, match)); 

    if (match) i += skip; 


} 

Если вы используете метод string.contains и слово, которое вы ищете является «человек», в то время как текст где-то содержит «мантию» и «ручной», метод string.contains вернется как истина.

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