| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Работа со строками |
| Автор: barin_Student 25.1.2008, 08:36 |
| Есть строки вида: ---------------------------------------------------------------------- 1- +cmgl: 2,"status","telephone"yy/mm/dd(Date).hh.mm.ss"mls(time) 2 - text 3 - 4 - status1 ---------------------------------------------------------------------- --- это просто я разделил, пакет ответа... Для начала я ложу в строку 1 String[0] 2 String[1] 3 String[2] 4 String[3] Создаю так: String[] stroki = new String[3]; в методе строки заполняются... потом для разбора нужной инфы , я уже сломал голову, как мне вытащить из этих строк : telephone,Date, time, text, status1? Помогите пожалуйста , а то чета голова не варит, сори за притивизм, |
| Автор: Ulysses4j 25.1.2008, 08:51 | ||
А тут действительно кавычки непарные? Вообще, какой-то не очень регулярный формат, я бы на вашем месте в первую очередь попробовал его словами описать: после "1 - " всегда идет значение с лидирующим "+" и единственно ли оно или может быть несколько (тоже с плюсами или без?). |
| Автор: barin_Student 25.1.2008, 08:58 |
| Вопщем вот первая строка как есть так и напишу: +CMGL: 2,"READ","+7777****","08/01/25,11:57:55+34" где "8777***" - telephone и тд.... |
| Автор: nornad 25.1.2008, 09:52 | ||
Регулярными выражениями из строки можно вытащить всё, что тебе надо. Вот выражение:
Первая группа - телефон (с плюсом, если есть; пробелов и тире в номере быть не должно) Вторая группа - дата (гггг/мм/дд, гг/мм/дд или вообще г/м/д) Третья группа - время (чч/мм/сс) Четвёртая группа - миллисекунды (если надо). Если никогда не использовал регулярные выражения и не в курсе, что это - поищи темы на форуме, тут много чего уже говорили. Классы для работы с регулярками - Pattern и Matcher. |
| Автор: barin_Student 25.1.2008, 11:12 |
| А если просто резать строку? |
| Автор: v2v 25.1.2008, 11:19 |
| резать тебе никто не запрещает, но меьчайшие изменения в структуре твоей строки и прощай резалка. попробуй всё таки использовать http://j2w.blogspot.com/2008/01/java.html |
| Автор: barin_Student 25.1.2008, 11:34 |
| Спасибо за ссылку , сижу читаю..... |
| Автор: barin_Student 25.1.2008, 11:59 |
| Прочитал , но доконца не понял.... Если можно какой нить пример с импортом, тока не с почтовыми адресами... Я был бы очень вам благодарен... |
| Автор: v2v 25.1.2008, 12:07 |
| barin_Student, вот теперь прочитай ещё раз пост nornadа |
| Автор: barin_Student 25.1.2008, 12:21 |
| .*:\s*\d+\s*,\s*".*"\s*,\s*"([+]?\d+)"\s*,\s*"(\d{1,4}/\d{1,2}/\d{1,2}),(\d{1,2}:\d{1,2}:\d{1,2})[+](\d{1,3})" Так где здесь первая группа , а где вторая?... Pattern p = Pattern.compile(.*:\s*\d+\s*,\s*".*"\s*,\s*"([+]?\d+)"\s*,\s*"(\d{1,4}/\d{1,2}/\d{1,2}),(\d{1,2}:\d{1,2}:\d{1,2})[+](\d{1,3})" А дальше что , я просто не вижу вибиваний.. я вижу сравнения и все.... |
| Автор: LSD 25.1.2008, 12:37 |
Группа это то, что стоит в скобках. Например первая это ([+]?\d+). |
| Автор: barin_Student 25.1.2008, 12:43 |
| Ладно есть там группа , то что в скобках , а как ее (нужную группу) , вырезанную положить в переменную?.. Просто не могу понять .. грипп.. но по сети не заразно! |
| Автор: LSD 25.1.2008, 12:49 | ||
|
| Автор: nornad 25.1.2008, 13:13 |
| Кроме того, как я уже говорил - на форуме достаточно тем, в которых обсуждались регулярные выражения и методы работы с ними. Нужно лишь провести небольшой поиск. Кстати, в самом низу страницы есть список схожих по содержанию тем - даже и искать не всегда требуется. |
| Автор: barin_Student 25.1.2008, 13:24 |
| Это примерно так выглядит?: Pattern pattern = Pattern.compile("([+]?\d+)"); Matcher matcher = pattern.matcher("+CMGL: 2,"READ","+7777****","08/01/25,11:57:55+34" "); while(matcher.find()) { String telephone = matcher.group(1);// а что такое matcher.group(1)? } правильно? Добавлено через 3 минуты и 16 секунд Посмотрел все что в поиске вышло , там не мои проблемы затрагивали, восновном речь в тех темах шла о ошибках... |
| Автор: LSD 25.1.2008, 13:35 | ||
Нет, в качестве паттерна используй все выражение:
И научить уже тегами Код пользоваться! |
| Автор: barin_Student 25.1.2008, 13:42 |
| Большие пасибки за помощь, счас проверять буду... Гриппую вот и туплю.... |
| Автор: barin_Student 28.1.2008, 12:04 | ||||
Попробовал , если есть строка вот такого вида:
а как мне выделить нужный блок когда таков:
Вопщем строка то у меня такая: +CMGL: 2,"READ","+7777****","08/01/25,11:57:55+34" а не такая: +CMGL: 2,\"READ\",\"+12345678\",\"08/01/25,11:57:55+34\ Не могу разобраться..... помогите пожалуйста. |
| Автор: barin_Student 28.1.2008, 12:53 |
| А если воспользоваться StringTokenizer, ведь там считаются но и разбиваются слова? Только я незнаю как запятаю там заносииться в качесве разделителя? |
| Автор: LSD 28.1.2008, 13:03 | ||
|
| Автор: nornad 28.1.2008, 13:05 |
| То есть у тебя в номере телефона хранятся звёздочки? Замени тогда ([+]?\\d+) на ([+]?[*\\d]+). |
| Автор: barin_Student 28.1.2008, 13:28 |
| Я решил эту проблему(парсинга), есть вопрос , если я разделил элементы StringTokenizer"oм, то как мне эти элементы в строку перевести? Из StringTokenizer в String? Увидел что вы уже отписали... сори не смотрел...)) Вот по этой ссылке я про переводы в String ничаго не нашел: http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html#StringTokenizer(java.lang.String,%20java.lang.String) |
| Автор: LSD 28.1.2008, 13:32 |
| barin_Student, и давай ты уже все таки начнешь читать документацию, а не спрашивать по каждому вопросу на форуме? В доке по StringTokenizer в самом начале есть пример его использования. |
| Автор: barin_Student 28.1.2008, 13:45 |
| Вот увидел... метод... все спасибо за помощь , тема закрыта.......))) |