![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Доброе время суток, помогите начинающему организовать процесс.
Есть сообщения, которые приходят посредством Сокета, они читаются построчно "сообщения разделены пробелами" и возвращаются. Как сделать лучьше с этим кодом, что бы строки ещё и анализировать.т.е Вот строка, имеет вид: /06-07-15/16-15-41 HO BTR5+30 PC:Y 210 SYST = 40 ATA = 4 ST = ON ---------------- п р о б е л ----------------------------- /06-07-15/16-15-41 HO BTR5+30 PC:Y 210 SYST = 231 ATA = 4 ST = ON Надо анализаровать только 2-ю строчку и вот эту часть "SYST = 40 может быть и не 40 а 231 и т.п" Так вот если там "40" то System.out.println("ERROR"), а если "231" то System.out.println("OK"). Строчки бывают разной длины и ширины, а ещё постоянно дополняются новыми. ВОТ код которым я читаю просто все строчки без анализа.
Может лучьше создать txt файл где будет описанно если SYST = 40 то ето если SYST = 321 то то.??? Только вопрос КАК???И каким способом, может что то по другому. Заранее огромное СПАСИБО. |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Честно говоря, трудно понять этот "поток сознания", хотелось бы более четкого описания проблемы. В частности, нормальное описание формата входных данных, типа:
потому как сейчас вообще нефига не понятно: так, чем разделены сообщения, пробелом или символом перевода строки? Потом:
т.е. формат строки не фиксирован, или как? Если уж приводишь код, то хотелось бы работоспособный код, а не какой-то набросок. Иначе зачем его приводить. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
344092
Береш вторую строчку и проверяешь, что там на интересующей тебя позиции... У класса String есть все необходимые методы... для более сложного анализа допускает использование регулярных выражений.. В общем, поставь, пожалуйста, вопрос яснее.. |
|||
|
||||
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Тогда проще и яснее. Я немного изменю вопрос.
пусть есть тхт файл в котором с внешнего источника "как бы создаётся журнал,лог и тд" в него постоянно добовляются данные вот в такой форме /06-07-15/16-15-41 HO BTR5+30 PC:Y 110 SYST = 40 ATA = 4 ST = ON /06-07-15/16-15-41 HO BTR5+30 PC:G 510 SYST = 231 STA = 48 ST = OFF /06-07-15/16-15-41 HO BTR5+30 PC:G 213 SYST = 231 STA = 400 ST = OFF Интересует только строчка "SYST = XXX" где ХХХ- разное число Задача: 1) читать файл при поступлении в него нового сообщения "не читать весь а только новое поступившее" 2) анализировать 2-ую строчку "точнее "SYST = XXX" и если число в "SYST = 1" тогда system.out.println("Warning") если "SYST = 4" тогда system.out.println("Error !!!") 3) Чисел т.е "xxx" много и к каждой надо свой system.out.println("") Как реализовать данный процесс??? Буду очень благодарен |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Составить регулярное выражение, которое бы описывало эту конструкцию. Что то типа:
2. Читать данные построчно, во второй строке искать строку SYST = , после чего выделить все цифры которые за этим следуют. Первый способ универсальней, второй быстрей. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Что то не выходит
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
сделал так НО как переделать на регулярные выражения так будет конечно проще, ни как не могу догнать
|
|||
|
||||
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Объясните пожалуйста как переделатьтак:
есть строка, положение одно и тоже вот она (оригинал) !! /05-01-15/00-05-05 ЕР IFH56HY GC:A 195 INFO = 367 DEPASSEMENT SEUIL YTY NTNE = 51 в строке интересует 3 вещи вот это (!!) кстати может быть и (!) и так (!!!) т.е 3 вида на которые надо сделать то же самое что (см.ниже) Вырезать Дату /05-01-15/00-05-05 после слова EP в данной строке ничего не надо и главное цифра после INFO = xxx которую как то надо обработать, т.е их может быть много напр. если цифра 367 как в сообщении то сделать к примеру System.out.rpintln("Ошибка ввода") если цифра 23 то System.out.rpintln("Перегрузка") В общем вопрос такой, как обработать в строке много,разных значений и к каждому присвоить что то вроде System.out.rpintln ("-в зависемости от цифры в INFO-") Заранее благодарю, и если не трудно то подробно хотя бы в какую сторону мне рулить... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если ты можешь сразу считать, сразу все 3 строки, то можно обойтись и одним регулярным выражением, если нет, то надо составить 2 регулярки.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| 344092 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Огромное спасибо, работает!
А как вырезать строку с позиции (на примере моего кода без регулярных, просто хочу разобраться как вырезать позиции и направлять их)
вырезать нужно ВС:В и направить в
|
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Посмотри класс StringTokenizer
|
|||
|
||||
| 344092 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Огромное спасибо LSD, всё заработало на ура. Осталось последнее
// Строка первого типа ? if (str.startsWith("!")) { String tempStr = str; // Ищем первый пробел в первой строке int pos = tempStr.indexOf(" "); String level = tempStr.substring(0, pos); System.out.println("Level: [" + level + "]"); Не могу создать switch: для выбора ! или !! или !!! символа, т.к им тоже надо 3-и разных параметра " пример ! внимание, !!- особое внимание !!!- всё кина не будет" Да и switch: символы ! !! !!! не понимает только цыфры??? Их наверное заменять надо или всё же нет? |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |