Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

RichTextBox поиск выделение нужного

2.1K
08 мая 2007 года
Ariman
102 / / 20.10.2005
Доброго времени суток!

Случилась маленькая проблема. Пришел к выводу, что не могу организовать поиск и выделение определенного количества символов после найденного слова в richtextbox е. Подскажите, каким образом это реализуется? Может есть пример?

Насколько я понимаю, необходимо искать слово, RichTextBox.Find. Потом перебирать и считывать каждый символ до достяжения определенного занчения в цикле. Так? Так вот как считать каждый символ в отдельную переменную, тоесть чтобы в переменной была строка.

Заранее спасибо за ответ.
273
10 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
Тебе RichTextBox.Find вернёт позицию символа в строке и выделит найденный текст, настройки поиска задаются при помощи RichTextBoxFinds.
Вот простой пример с поиском и выделением:
 
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]string[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] searchText = [/SIZE][SIZE=2][COLOR=#800000]"black cat"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] position = richTextBox1.Find(searchText);[/FONT]
[FONT=Courier New]richTextBox1.Select(position, searchText.Length);[/FONT]
[/SIZE]
2.1K
11 мая 2007 года
Ariman
102 / / 20.10.2005
Спасибо. Пошел пробовать. :) Хотя может я извращением занимаюсь, мне необходимо получить ссылку на картинку. Но картинка - OCR :) и расширения она не имеет. :(

Спасибо. Буду пытаться.
273
13 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
Чего тоя не понял.... а как картинку ты собрался искать при помощи Find??? Что найти-то тебе надо?
2.1K
15 мая 2007 года
Ariman
102 / / 20.10.2005
Задачу я поставил себе следующую:

Сделать атоматический реггер к примеру на сайте. Вот и думал как делать. Если без картинок сайт, то там все просто, пост запрос веб реквестом с параметрами и все.

Там где есть код, который нужно ввести, необходимо вытаскивать адрес картинки и показывать его себе. Каким образом это сделать я так и не понял, в ответ от сервера приходит то-ли идентификатор то-ли чего еще, не знаю. Но. Как вытащить его из ответа я так и не понял. Поэтому пытаюсь вытаскивать из полученного результат, тоесть загрузки страницы. Я загружаю ее хтмл код в ричтекстбокс, потом ищу ее в тесксте, запрашиваю отдельно, вывожу. Пишу в поле это код картинки, далее отправляю запрос уже на сервак с этим кодом. может я изобретая велосипед? :)
2.1K
11 декабря 2007 года
Ariman
102 / / 20.10.2005
Так ничего и не получилось. Жду помощи от форумцев...
5
11 декабря 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: Ariman
необходимо вытаскивать адрес картинки и показывать его себе. Каким образом это сделать я так и не понял, в ответ от сервера приходит то-ли идентификатор то-ли чего еще, не знаю.

Ломать CAPTCHA это конечно интересно, тем более что дырки во многих форумных движках есть. Попробуй для начала искать тег IMG в полученной от сервера странице - лучше через регулярные выражения.

2.1K
11 декабря 2007 года
Ariman
102 / / 20.10.2005
Да ее никто ломать не собирался. :) меня просто интересует поиск по тексту определенного текста. Неужели перебирать все по одному символу ? Может есть пути изящней..
5
15 декабря 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: Ariman
Да ее никто ломать не собирался. :) меня просто интересует поиск по тексту определенного текста. Неужели перебирать все по одному символу ? Может есть пути изящней..


Вот поиск <img> тегов в http-ответе сервера.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;

namespace ImageTagParser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Regex img_tag = new Regex("<img.*?>", RegexOptions.IgnoreCase | RegexOptions.Compiled);

        private void btnParse_Click(object sender, EventArgs e)
        {
            WebRequest request = WebRequest.Create(txtUrl.Text); // например: http://lan.du/
            try
            {
                using (WebResponse response = request.GetResponse())
                {
                    HttpWebResponse http_response = response as HttpWebResponse;
                    if (http_response != null)
                    {                        
                        using (Stream stream = http_response.GetResponseStream())
                        {
                            // кодровка текста в ответе сервера                            
                            Encoding encoding = Encoding.GetEncoding(1251); // по факту русская "виндовая"
                            //Encoding encoding = Encoding.GetEncoding(http_response.CharacterSet); // такая, каую назвал сказал сервер
                           
                            // получаем ответ и перекодируем его
                            StringBuilder response_string = new StringBuilder();
                            byte[] buffer = new byte[4096];
                            int count = 0;
                            while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
                                response_string.Append(encoding.GetString(buffer, 0, count));
                            string input = response_string.ToString();
                           
                            // разбираем ответ сервера
                            StringBuilder result_string = new StringBuilder();
                            foreach (Match m in img_tag.Matches(input))
                                result_string.AppendLine(m.Value);
                            txtResult.Text = result_string.ToString();
                        }
                    }
                }
            }
            catch(Exception error)
            {
                txtResult.Text = error.Message;
            }
        }
    }
}

На форме лежат кнопка (Button) btnParse, поля ввода (TextBox) txtUrl и txtResult.
txtUrl используется для ввода целевого адреса
txtResult - результат простого http-запроса или сообщения об ошибках.

Для вычленения src атрибута в теге img можно написать более строгое регулярное выражение, думаю, с этим вы справитесь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог