| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Фильтр строки |
| Автор: jone31 11.8.2009, 20:23 |
| подскажите как посчитать сколько цифр в строке, и цифры написанные словами(один, два, три...) тоже |
| Автор: Joil 11.8.2009, 21:15 | ||
jone31, первое что пришло в голову:
Правда написано коряво... но вроде работеает, если надо все цифры найти, то в цикле |
| Автор: jone31 11.8.2009, 22:30 | ||
| не, это немного не то. короче у меня щас вот так:
меня это устраивает, но нужно сделать что бы числа от 10 до 20 не заменялись. |
| Автор: Joil 12.8.2009, 06:35 |
| jone31, так тебе заменить надо или посчитать. Если посчитать, то тогда как я понимаю ты звездочки (*) считаешь? Если тебя это устраивает, ну и допиши перед этим всем замену чисел от 10 до 20 на решетку (#) допустим. В чем проблема? |
| Автор: jone31 12.8.2009, 14:32 |
| нет, ты не правильно понял. Корчое этот скрипт пишу для ICQ чата, цель его работы: что бы в чат не отправляли СПАМ, а именно юины других чатов. Мне нужна сделать что бы если в сообщении более 2 цифр, то заменять все на *, если нет то оставить как есть. Тот код что я выше выложил убирает абсолютно все цифры, и получается что если он напишет свой возраст(например: мне 30), то оно заменится на "мне **", вот в чем сложность! |
| Автор: Joil 12.8.2009, 16:35 | ||
jone31, вот быстренько накатал опять, правда опять же не очень красиво и замена только цифр (не прописных):
Вроде работает, осталось только заменить слова А, не, я тебя опять не правильно понял вроде бы.. (( Короче, если в сообщении более 2х цифр или когда подряд стоит более 2х цифр (вот непонятно).. приведи более подробные примеры и более подробные правила замены? |
| Автор: aleksandy 13.8.2009, 11:34 | ||
| Я думаю надо смотреть в сторону regexp. Вот навскидку
|
| Автор: jone31 13.8.2009, 12:15 | ||
у меня он вообще скрывает все цифры. как посчитать сколько всего цифр в сообщении? |
| Автор: Joil 13.8.2009, 15:36 | ||||||||||
Тоже думал об этом, но что то ничего путного у меня не получилось
Ну если исходя их примеров, то наверное что то типа того:
Вот на выходе вроде все как надо:
Добавлено через 14 минут и 49 секунд Если надо заменить не каждую цифру одной звездочкой, а каждую последовательность цифр одной звездочкой, то можно вот так написать:
на выходе:
|
| Автор: dorogoyIV 13.8.2009, 16:14 |
| все не так в аське можно написать такое: "привет! 100 лет тебя не слышал!" - уже три цифры подряд идут, еще так: "я 1928 года рождения" - уже четыре цифры... |
| Автор: jone31 14.8.2009, 18:50 | ||
можно и так. что ты можешь предложить(кроме того что уже предложено), что бы отфильтровывать юины из сообщений? |
| Автор: Joil 14.8.2009, 20:53 |
| jone31, так UIN может быть 5(используются только администрацией вроде),6,7,8 и 9-значным? почему ты начал с 2х цифр? можно фильтровать по типу xxxxxx, xxx-xxx, xxx xxx, xxxxxxx, xxx-xxx-x, xxx xxx x и т. д. (ну это только предположение)! или я опять че то не понимаю? |
| Автор: dorogoyIV 15.8.2009, 17:29 | ||
если разобраться, не так уж много этих чатов... можно их все в статическое поле забить... т. е. тебе надо будет забить адреса, и делать проверку на них... Добавлено через 7 минут и 35 секунд ну и естественно для проги предусмотреть добавление других адресов чатов, что то вроде плагина |
| Автор: jone31 1.9.2009, 17:06 | ||||
этих чатов туева куча... вообщем я остановилсо на regxp
код работает, и меня он устраивает. Но тут есть одна проблема: работает тока если цифры идут вподряд(1234...), а если нет(1 2 3 4 или 1.2.3.4 ...) то не срабатывает. помогите составить маску что бы и это включить |
| Автор: jone31 1.9.2009, 17:46 | ||
вопрос пока решен вот так:
недостаток в том что заменяет полностью сообщение, а не только кусок с цифрами! |
| Автор: mgarin 1.9.2009, 18:55 |
| jone31, на самом деле, дело проигрышное пытаться отсеять все варианты Можно по разному передавать номера, например: 33.OO.O8.I6 - например вполне внятный зашифрованный номер) Плюс также с цифрами вы в любом случае отсеете много лишнего, как то телефонный номер например, год рождения, как было приведено выше... Время суток как то 22:00 / 14.52 или даты... Действительно ли есть толк пытаться отсеять это? Добавлено через 1 минуту и 52 секунды P.S. regexp тут тоже не особо поможет (да он укоротит метод замены, но в любом случае будет резать все без разбору подходящее под шаблон) Если речь действительно идет о системе обмена сообщениями - толку от такой замены в каждом сообщении?.. |
| Автор: jone31 1.9.2009, 19:06 | ||
верно, я не собираюсь угадывать и отсеивать все варианты. Юзеры пишут юины в основном в двух формах: - Первый - просто тупо цифры(123456789) и админ бот их за это кикает. - Второй - между цифрами ставят какой нибудь символ (1.2.3.45.6.78.9) и админ бот ничего не подозревая пропускает их. Первый способ побарол, а со вторым пока ничего получается. Добавлено через 1 минуту и 46 секунд тот код в последнем моем посте подходить что бы побароть второй способ, но он заменяет все сообщение, вот в этом и загвостка |