Вход

Просмотр полной версии : Поиск фрагмента строки[c#]


MaDfUn
27.05.2008, 18:04
Как организовать поиск фрагмента строки массива...
зы
заранее спс

Jes
27.05.2008, 19:01
String.indexOf("фрагмент"); // это?

MaDfUn
27.05.2008, 19:34
Вобщем, есть прога, которая считывает данные с текстового файла, надо чтобы пользователь вводил искомый текст, а выводило строку содержащую данный текст
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine("Введіть назву файла");
string fname = "c:\\" + Console.ReadLine();
Console.WriteLine("Введіть текст для пошуку");
string ftext = Console.ReadLine();
if (!File.Exists(fname))
{
Console.WriteLine("{0} не існує", fname);
}
using (StreamReader sr = File.OpenText(fname))
{
string input;


input = null;
int c = 0;
while ((input = sr.ReadLine()) != null)
{
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine("Введіть назву файла");
string fname = "c:\\" + Console.ReadLine();
Console.WriteLine("Введіть текст для пошуку");
string ftext = Console.ReadLine();
if (!File.Exists(fname))
{
Console.WriteLine("{0} не існує", fname);
}
using (StreamReader sr = File.OpenText(fname))
{
string input;


input = null;
int c = 0;
while ((input = sr.ReadLine()) != null)
{
//////////////////////////////////////////////////////////////////
// КАК ЕГО ПРАВИЛЬНО ПРИЛЕПИТЬ СЮДА???
///////////////////////////////////////////////////////////////////
string z=input.IndexOf(ftext);//????
if ( ?????? )
{
Console.WriteLine(input);
}

}

Console.WriteLine(c);
sr.Close();
}

Console.ReadKey();
}

}
}

if (z==null)
{
Console.WriteLine(input);
}

}

Console.WriteLine(c);
sr.Close();
}

Console.ReadKey();
}

}
}

Jes
27.05.2008, 20:02
что-то вроде :
...
nput = null;
int c = 0;
while ((input = sr.ReadLine()) != null)
{
if ( input.indexOf("строка") > 0)
{
...
нашли совпадение
...
}
}...

12usver12
27.05.2008, 21:06
Держи элегантный код

string[] mass = new StreamReader(@"C:\12.txt",Encoding.Default).ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.None);

foreach (string stroka in mass) { if (stroka.IndexOf(fText) != -1) { Console.WriteLine(stroka); } }

Jes
27.05.2008, 21:49
12usver12 > а если файл больше 100 - 500 кб ?

12usver12
27.05.2008, 23:13
может ты хотел сказать если файл больше 5-10 мег ?
ну можно binaryreader , правда чуть больше гемора прибавится,
хотя ето наверна из методички какой то методы для студентов, наверно там подразумевается через ReadLine() тогда еще проще

Jes
27.05.2008, 23:27
/me последнее время привык экономить каждый байт ...
(не про C# )

z01b
27.05.2008, 23:41
Было бы легче использовать regexp-ы. =\

MaDfUn
28.05.2008, 00:08
что-то вроде :
...
nput = null;
int c = 0;
while ((input = sr.ReadLine()) != null)
{
if ( input.indexOf("строка") > 0)
{
...
нашли совпадение
...
}
}...
Выдаёт ошибку:
Error 1 'string' does not contain a definition for 'indexOf' and no extension method 'indexOf' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?) D:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\ConsoleApplication2\ConsoleApplicati on2\Program.cs 31 31 ConsoleApplication2

geezer.code
28.05.2008, 00:38
string str = String.Empty;
using (StreamReader sr = new StreamReader("in.txt"))
{
while (!sr.EndOfStream)
{
str=sr.ReadLine();
if (str.Contains("ищем это"))
Console.WriteLine(str);
}
}

может всьо таки поможет )

MaDfUn
28.05.2008, 01:11
Всем огромное спасибо, может посоветуете книжки какиенить а то я нигде не встречал многие из используемых в примерах функций.....

geezer.code
28.05.2008, 01:22
Manning - Microsoft .NET for Programmers
Manning - Windows Forms Programming with C#
Wiley - C# Bible
Sybex - Visual C# .NET Programming
O'Reilly - Programming C# for Visual Studio .NET - 2nd Edition
Русская редакция Петцолъд Ч. Программирование для Microsoft Windows на С#. В 2-х томах.

вот это всьо можно скачать в инете, но это всьо по 1 или 2 спецификации с# и .NET 1.*
2.0 по третьей спецификации и .NET3.* имхо лучше смотреть соответствующие версии МСДН