Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2015, 09:10   #1
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию Найти искомое слово в txt-файле

Допустим дан файл words.txt, внутри которого есть список слов.
Задача: найти слово, которое я буду вводить через форму.

Хотел записать в массив строк, чтобы потом в массиве искать, но он выдает ошибку.
Код:
using System.Windows.Forms;
using System.IO;

namespace _word
{
    public partial class Form1 : Form
    {
        string s;
        string[] massiv_slov;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (File.Exists("words.txt"))
            {
                //listBox1.Items.Add(File.ReadAllText("words.txt", System.Text.Encoding.GetEncoding(1251)));
                s = File.ReadAllText("words.txt", System.Text.Encoding.GetEncoding(1251));
            }
            else
            {
                listBox1.Items.Add("Файл не найден.");
            }
            listBox1.Items.Add(s);
            massiv_slov[0] = s;
        }
    }
}
Если будут каракули, добавьте параметр System.Text.Encoding.GetEncoding(12 51).
Вложения
Тип файла: txt words.txt (103 байт, 149 просмотров)
helpkz вне форума Ответить с цитированием
Старый 17.09.2015, 09:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и как всегда тексты ошибок будут вынесены на всеобшее обозрение на конференции по правам человека в ООН?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2015, 09:32   #3
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну и как всегда тексты ошибок будут вынесены на всеобшее обозрение на конференции по правам человека в ООН?
Хорошо-хорошо, только не ругайтесь. Я думал для опытного глаза будет видна ошибка, только посмотрев на код.
Изображения
Тип файла: png words.txt-error.png (25.3 Кб, 374 просмотров)
helpkz вне форума Ответить с цитированием
Старый 17.09.2015, 09:40   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так вы не присвоили ничего massiv_slov, он null, а пытаетесь обратиться к его первому элементу.

Видимо надо было с помощью метода Split строки разделить строку на слова и записать в массив.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 09:45   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, строковый массив, имхо, объявлен неверно!

попробуйте так:
Код:
string[] massiv_slov = new string[n]; // где n - количество элементов в массиве
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2015, 10:05   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык автор не знает какое у него n пока слова не прочитает.
И метод Split строки как раз возвращает массив, так что не надо его самому создавать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 10:30   #7
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Дык автор не знает какое у него n пока слова не прочитает.
И метод Split строки как раз возвращает массив, так что не надо его самому создавать.
Забыл, что метод Split() разбивает на слова.
Код:
string[] massiv_slov = s.Split();

            listBox1.Items.Add(s);
            for (int i = 0; i < 10; i++ )
            {
                listBox1.Items.Add(massiv_slov[i]);
            }
Теперь можно работать с каждым элементом массива, т.е. с каждым словом.
Вместо 10 надо как-то подсчитать количество строк или слов.
Спасибо за ответ.
helpkz вне форума Ответить с цитированием
Старый 17.09.2015, 10:34   #8
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, строковый массив, имхо, объявлен неверно!

попробуйте так:
Код:
string[] massiv_slov = new string[n]; // где n - количество элементов в массиве
Что-то я не сообразил. Спасибо за наводку.
helpkz вне форума Ответить с цитированием
Старый 17.09.2015, 10:35   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вместо 10 нужно писать размер массива:

Код:
string[] massiv_slov = s.Split();

            listBox1.Items.Add(s);
            for (int i = 0; i < massiv_slov.Length; i++ )
            {
                listBox1.Items.Add(massiv_slov[i]);
            }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2015, 10:35   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
massiv_slov.Length
Split без параметров вроде просто по пробелам разбивает. Если есть например запятые и т.п., то надо передать список разделителей.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами (из Файла input.txt переписать слова в файл output.txt, удалив все слова, заданные в файле diction.dic Polina25 Паскаль, Turbo Pascal, PascalABC.NET 17 07.05.2014 17:49
CPP: самое длинное слово в файле zolman Помощь студентам 1 28.12.2011 23:39
Заменить заданное слово в тексте, находящемся в заданном файле, на другое слово (С++) Lapochka Помощь студентам 6 01.12.2011 14:05
Доступ к строкам в файле .txt severin Помощь студентам 11 10.11.2009 17:16