Форум программистов, компьютерный форум CyberForum.ru

Поиск нескольких символов через indexOf - Android

Восстановить пароль Регистрация
 
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
04.11.2014, 00:29     Поиск нескольких символов через indexOf #1
кусок кода рабочий

Java
1
2
private void processSMS(String paramString) {
        int i = paramString.indexOf('д');
но как только добавляю ещё один символ перестаёт работать и не компилируется
Java
1
2
private void processSMS(String paramString) {
        int i = paramString.indexOf('дД');
ЧТо можно сделать? мне нужно что бы искало несколько символов, а не один.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2014, 00:29     Поиск нескольких символов через indexOf
Посмотрите здесь:

Поддержка нескольких типов экранов Android
Android set и get нескольких значений
DatePickerDialog на нескольких обработчиках событий Android
Android EditText и добавление символов в него через собственную "клавиатуру"
Добавление нескольких элементов в ListView Android
Запуск нескольких AsyncTask Android
Android Чтение русских символов. Отрицательные значения у символов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
04.11.2014, 12:50     Поиск нескольких символов через indexOf #2
walkover, а что, нынче строки выделяются апострофами? В апострофах выделяются только отдельные символы. Используйте кавычки.
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
11.11.2014, 21:39  [ТС]     Поиск нескольких символов через indexOf #3
проблема в том что я пробовал использовать кавычки! это самое первое, что мне пришло в голову, всё бы нечего, но не работает

Добавлено через 2 часа 2 минуты
в общем я маленько не правильно указал, после дД есть пробел, тобишь "дД " получается что не видит пробел, копирует сразу после "дД" а надо что бы копировала после "дД ", как сделать?
например дД полез5678, надо что бы скопировало "полез56" но оно копирует " полез5" как можно убрать пробел?
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
12.11.2014, 09:35     Поиск нескольких символов через indexOf #4
walkover, если вы используете substring, то первый аргумент просто увеличьте на 1.

Добавлено через 19 секунд
Либо используйте метод trim.
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 12:52  [ТС]     Поиск нескольких символов через indexOf #5
Цитата Сообщение от CoolMind Посмотреть сообщение
walkover, если вы используете substring, то первый аргумент просто увеличьте на 1.
Добавлено через 19 секунд
Либо используйте метод trim.
Javascript
1
2
3
message = paramString.substring(i + 1, i + 8);
                    Log.d("SMSBroadcastReceiver", message);
                    sendSMS(telephoneDirector, message);
вот так у меня, первый аргумент пробовал увеличить на 1, не чего не вышло, всё тоже самое. А так применить метод trim?
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
12.11.2014, 13:27     Поиск нескольких символов через indexOf #6
walkover, честно говоря, из кода не видно, какая строка была на входе и какой стала. Вроде, метод trim применяется просто (он отбрасывает конечные пробелы): messsage = paramString.substring(i + 1, i + 8).trim();
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.11.2014, 13:28     Поиск нескольких символов через indexOf #7
walkover, не понятно что есть, и что должно получится)
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 13:41  [ТС]     Поиск нескольких символов через indexOf #8
Цитата Сообщение от CoolMind Посмотреть сообщение
messsage = paramString.substring(i + 1, i + 8).trim();
вооо, спасибо))) а я даже и не думал что туда его надо, слушай, а он отбрасывает только конечные пробелы или впереди тоже? проблема в том что мне нужно убрать пробел перед нужными символами, к примеру " стр01" нужно что бы отправляло "стр01" без пробела впереди.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.11.2014, 13:44     Поиск нескольких символов через indexOf #9
walkover,
Java
1
2
String paramString = "    стр01   ";
String message = paramString.replaceAll(" ", "");// "стр01"
И всё, все пробелы исчезнут.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
12.11.2014, 13:50     Поиск нескольких символов через indexOf #10
walkover, да, trim отбрасывает и начальные, и конечные пробелы. Если это то, что вам требуется, конечно. Но вы же легко можете попробовать.

Добавлено через 1 минуту
http://www.tutorialspoint.com/java/java_string_trim.htm
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 14:04  [ТС]     Поиск нескольких символов через indexOf #11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
walkover,
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
String paramString = " * *стр01 * ";
String message = paramString.replaceAll(" ", "");// "стр01"
И всё, все пробелы исчезнут.
Да там дело в том, что прога ищет допустим слово "стр01" и копирует допустим 7 символов после него, если проще то есть фраза стр01 1234567890, надо просто что бы она искала слово стр01 и копировала после него 7 символом 1234567, а она копирует пробел+123456, вот я и подумал, что надо что бы она копировала 8 символов, тобишь пробел+1234567 и в итоге уберала пробел и отправляла только 1234567 без пробела. trim так сделает же да? если просто сделать messsage = paramString.substring(i + 1, i + 8).trim(); . Я просто щас проверить не могу, нет доступа к эклипсу с исходником.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.11.2014, 14:19     Поиск нескольких символов через indexOf #12
Если правильно вас понял - я бы сделал так:

Java
1
2
3
4
5
6
7
8
9
10
11
String paramString = "стр01 1234567890 стр02 1234567890 стр03 1234567890";//Я так понимаю исходный файл
        String delimiter = " ";
        String key = "стр01";
        String message;
        String[] paramStringArray = paramString.split(delimiter);
        
        for(int i = 0; i < paramStringArray.length; i++){
            if(paramStringArray[i].equals(key)){
                message = paramStringArray[i + 1];
            }
        }
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
12.11.2014, 14:21     Поиск нескольких символов через indexOf #13
walkover, понятно. Тут 2 варианта. Либо вы находите сначала позицию "стр01", затем находите позицию пробела, отсчитывая от позиции "стр01" (это плохой вариант), либо вы находите позицию "стр01" и прибавляете к ней "стр01".length() + 1, т.к. вы ещё исключаете один пробел. В общем, не с той позиции подстроку искали.
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 14:52  [ТС]     Поиск нескольких символов через indexOf #14
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Если правильно вас понял - я бы сделал так:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
String paramString = "стр01 1234567890 стр02 1234567890 стр03 1234567890";//Я так понимаю исходный файл
* * * * String delimiter = " ";
* * * * String key = "стр01";
* * * * String message;
* * * * String[] paramStringArray = paramString.split(delimiter);
for(int i = 0; i < paramStringArray.length; i++){
* * * * * * if(paramStringArray[i].equals(key)){
* * * * * * * * message = paramStringArray[i + 1];
* * * * * * }
* * * * }
число 1234567890 постоянно разные, тобишь 454353459349 или 457545467546 и т.д.

Добавлено через 1 минуту
Цитата Сообщение от CoolMind Посмотреть сообщение
walkover, понятно. Тут 2 варианта. Либо вы находите сначала позицию "стр01", затем находите позицию пробела, отсчитывая от позиции "стр01" (это плохой вариант), либо вы находите позицию "стр01" и прибавляете к ней "стр01".length() + 1, т.к. вы ещё исключаете один пробел. В общем, не с той позиции подстроку искали.
очень интересно)))) вот так и попробую, ну и ещё попробую что бы тупо убирало пробелы. отпишу о результате.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.11.2014, 15:03     Поиск нескольких символов через indexOf #15
Цитата Сообщение от walkover Посмотреть сообщение
число 1234567890 постоянно разные, тобишь 454353459349 или 457545467546 и т.д.
Это не важно. Все нормально отработает.
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 16:56  [ТС]     Поиск нескольких символов через indexOf #16
"стр01".length() + 1 - это не работает вообще((((
после добавления trim стало копировать вообще 01 12345)))))

буду пробовать последний вариант

Добавлено через 55 минут
как вставить код
Java
1
2
3
4
5
6
7
8
9
10
11
String paramString = "стр01 1234567890 стр02 1234567890 стр03 1234567890";//Я так понимаю исходный файл
        String delimiter = " ";
        String key = "стр01";
        String message;
        String[] paramStringArray = paramString.split(delimiter);
        
        for(int i = 0; i < paramStringArray.length; i++){
            if(paramStringArray[i].equals(key)){
                message = paramStringArray[i + 1];
            }
        }
в мой код? вот весь кусок кода как есть сейчас. не работает, вернее копирует хрен пойми как, логику вообще не улавливаю.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void processSMS(String paramString) {
        int i = paramString.indexOf("стр01");
        Log.i("SMSBroadcastReceiver", "paramString = " + paramString);
        String message;
        if (i != -1) {
            if (paramString.length() < 6 + (i + 1))
                Toast.makeText(this, "После @ меньше 6 символов",
                        Toast.LENGTH_LONG).show();
            else {
                try {
                    message = paramString.substring(i + 1, i + 6).trim();
                    Log.d("SMSBroadcastReceiver", message);
                    sendSMS(telephoneDirector, message);
                } catch (IndexOutOfBoundsException e) {
                    // TODO: handle exception
                    Log.d("SMSBroadcastReceiver",
                            "Something wrong with this county..."
                                    + e.getMessage());
                }
            }
 
        }
 
    }
копирует так при это коде 01пробел12
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
12.11.2014, 17:03     Поиск нескольких символов через indexOf #17
walkover, чтобы у вас не возникало вопросов, возьмите ручку и лист бумаги.
Аккуратно проделайте отладку или просто вставьте в нужные места Log.i, а затем поглядите в LogCat (в режиме Info) полученные сообщения. В Log.i выводите значения переменных. Затем возьмите ручку и поглядите, в какой позиции стоит какой символ, что вы в итоге хотите откуда скопировать.
Можно наловчиться и сделать это даже без отладки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 17:11     Поиск нескольких символов через indexOf
Еще ссылки по теме:

Android Не работает цик(или indexOf()
Пролистывание нескольких Activity Android
Передать файл через socket или через ftp api Android
Живой поиск через один EditText в разных Listview ? Android
Вызвать в браузере поиск по сайту через питон (jython) Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.11.2014, 17:11     Поиск нескольких символов через indexOf #18
walkover, попробуйте такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void processSMS(String paramString) {
        
        String key = "стр01";
        Log.i("SMSBroadcastReceiver", "paramString = " + paramString);
        String message = "";
        String delimiter = " ";
        String[] paramStringArray = paramString.split(delimiter);
        
        for(int i = 0; i < paramStringArray.length; i++){
            
            if(paramStringArray[i].equals(key)){
                message = paramStringArray[i + 1];
            }
            
        }
        
        
        Log.d("SMSBroadcastReceiver", message); 
        sendSMS(telephoneDirector, message);
 
    }
Yandex
Объявления
12.11.2014, 17:11     Поиск нескольких символов через indexOf
Ответ Создать тему
Опции темы

Текущее время: 09:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru