Доброе время суток!
Задача: Есть строка вида:
Код | "43 3 30 10 10 240 240 -1 3" эта строка также может выглядеть вот так: "43 3 30 10 10 240 240 -1 3//comment" "43 3 30 10 10 240 240 -1 3 //comment" " 43 3 30 10 10 240 240 -1 3//comment"
|
- Необходимо извлекать 9 элемент строки, то есть в данном случае это "3".
- Я как не мучался, у меня пока не выходит. Думал сделать вот таким образом, но тоже не выходит:
Код | for (int i1 = (i + 1); i1 < richTextBox2.Lines.Length; i1++) { String T1 = richTextBox2.Lines[i1]; if (T1 != "end" && T1.Length > 0) { String TL = ""; int j = 0; for(int il=1; il <= T1.Length; il++) { if (T1[il] != ' ') { TL = TL + T1[il]; } else if (T1[il] != ' ' && j==8) {
} else { j++; TL=""; } } } }
|
- Этот метод глупый, да и не работает, так как если в начале несколько пробелов, то переменная "j" увеличивается, следовательно будет не верное решение =(
P.S. -> По идеи, строку надо разделять как-то, я так делал в C++ во время работы с IP-адресами, но у меня не получается это реализовать на VC# =(
#Добавлено: -------------------
Вот так была реализована у меня проверка правильности IP-адреса на C++. (Благодарю за помощь dumb)
Код | TStringList *sl = new TStringList(); TStringList *ip = new TStringList(); ip->Sorted = true; sl->Sorted = true; sl->Duplicates = dupIgnore; sl->LoadFromFile(FileDir+"Data\\"+FilterFileName); for (int i = 0; i < sl->Count; ++i) { int ip1, ip2, ip3, ip4; AnsiString s = sl->Strings[i].Trim(); if(s.Pos(" ")) continue; if(sscanf(s.c_str(), "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4)==4) { // проверка правильности ip-адреса. if(ip1 > 0 && ip1 < 224 && ip2 > -1 && ip2 < 256&& ip3 > -1 && ip3 < 256 && ip4 > -1 && ip4 < 256) { s.printf("%d.%d.%d.%d", ip1, ip2, ip3, ip4); ip->Add(s); } } } ListBox1->Clear(); ListBox1->Items->AddStrings(ip); delete ip; delete sl;
|
|