istemihan Ответов: 1

Начальный индекс не может быть меньше нуля и " проблема


привет, когда я пытаюсь использовать его, он говорит: "startindex не может быть меньше, чем ноль" в 8-й линии и мне нужно написать &ЛТ;перед классом="ДФ-сырье" идентификатор="registryData"&ГТ; но когда я пытаюсь поставить его в "" класс и другие 2 слова остается за пределами "" пожалуйста, помогите мне

Что я уже пробовал:

string website =("https://www.whois.com/whois/" + domainname.ToString());
            WebRequest request = HttpWebRequest.Create(website);
            WebResponse answer;
            answer = request.GetResponse();
            StreamReader info = new StreamReader(answer.GetResponseStream());
            string cinfo = info.ReadToEnd();
            int start = cinfo.IndexOf("<pre class="df-raw" id="registryData">");
            int finish = cinfo.Substring(start).IndexOf("</pre>");
           string scinfo = cinfo.Substring(start,finish);
            rtxtregistery.Text = scinfo;

Richard MacCutchan

Это означает, что одно из ваших значений равно -1, что указывает на то, что он не нашел шаблон, который вы ищете.

1 Ответов

Рейтинг:
4

Graeme_Grant

То документация[^] государственный:

Цитата:
Нулевая индексная позиция значения, если эта строка найдена, или -1, если она не найдена. Если значение является строкой.Пусто, возвращаемое значение равно 0.

int start = cinfo.IndexOf("<pre class="df-raw" id="registryData">");
int finish = cinfo.Substring(start).IndexOf("</pre>");

Вы предполагаете, что текст существует... Чинить:
int start = cinfo.IndexOf("<pre class=\"df-raw\" id=\"registryData\">");
if (start >= 0)
{
    int finish = cinfo.Substring(start).IndexOf("</pre>");
    if (finish >= 0)
    {
        rtxtregistery.Text = cinfo.Substring(start, finish);
    }
}