Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
#1

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

04.11.2014, 00:29. Просмотров 807. Ответов 17
Метки нет (Все метки)

кусок кода рабочий

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

indexOf и анализ строки символов
Нужно подсчитать количество слов в вводимой строке и количество слов...

IndexOf поиск
Я чето не совсем понял IndexOf он только целые строки ищет? Возьмем простой...

Получение нескольких записей через поиск
Добрый день! Есть база на Access к которой подключаюсь через ADO. Нужно...

Символ не ищется в строке через IndexOf
Дорогие друзья, есть строка которую надо обработать, но он почему то не ищет...

Как найти много текста через IndexOf?
Вот например почитав про этот метод что он ищет с 0вого индекса первое...

17
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
04.11.2014, 12:50 #2
walkover, а что, нынче строки выделяются апострофами? В апострофах выделяются только отдельные символы. Используйте кавычки.
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
11.11.2014, 21:39  [ТС] #3
проблема в том что я пробовал использовать кавычки! это самое первое, что мне пришло в голову, всё бы нечего, но не работает

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

Добавлено через 19 секунд
Либо используйте метод trim.
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 12:52  [ТС] #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?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 13:27 #6
walkover, честно говоря, из кода не видно, какая строка была на входе и какой стала. Вроде, метод trim применяется просто (он отбрасывает конечные пробелы): messsage = paramString.substring(i + 1, i + 8).trim();
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 13:28 #7
walkover, не понятно что есть, и что должно получится)
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 13:41  [ТС] #8
Цитата Сообщение от CoolMind Посмотреть сообщение
messsage = paramString.substring(i + 1, i + 8).trim();
вооо, спасибо))) а я даже и не думал что туда его надо, слушай, а он отбрасывает только конечные пробелы или впереди тоже? проблема в том что мне нужно убрать пробел перед нужными символами, к примеру " стр01" нужно что бы отправляло "стр01" без пробела впереди.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 13:44 #9
walkover,
Java
1
2
String paramString = "    стр01   ";
String message = paramString.replaceAll(" ", "");// "стр01"
И всё, все пробелы исчезнут.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 13:50 #10
walkover, да, trim отбрасывает и начальные, и конечные пробелы. Если это то, что вам требуется, конечно. Но вы же легко можете попробовать.

Добавлено через 1 минуту
http://www.tutorialspoint.com/java/java_string_trim.htm
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 14:04  [ТС] #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(); . Я просто щас проверить не могу, нет доступа к эклипсу с исходником.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 14:19 #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];
            }
        }
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 14:21 #13
walkover, понятно. Тут 2 варианта. Либо вы находите сначала позицию "стр01", затем находите позицию пробела, отсчитывая от позиции "стр01" (это плохой вариант), либо вы находите позицию "стр01" и прибавляете к ней "стр01".length() + 1, т.к. вы ещё исключаете один пробел. В общем, не с той позиции подстроку искали.
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 14:52  [ТС] #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, т.к. вы ещё исключаете один пробел. В общем, не с той позиции подстроку искали.
очень интересно)))) вот так и попробую, ну и ещё попробую что бы тупо убирало пробелы. отпишу о результате.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 15:03 #15
Цитата Сообщение от walkover Посмотреть сообщение
число 1234567890 постоянно разные, тобишь 454353459349 или 457545467546 и т.д.
Это не важно. Все нормально отработает.
0
walkover
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 7
12.11.2014, 16:56  [ТС] #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
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 17:03 #17
walkover, чтобы у вас не возникало вопросов, возьмите ручку и лист бумаги.
Аккуратно проделайте отладку или просто вставьте в нужные места Log.i, а затем поглядите в LogCat (в режиме Info) полученные сообщения. В Log.i выводите значения переменных. Затем возьмите ручку и поглядите, в какой позиции стоит какой символ, что вы в итоге хотите откуда скопировать.
Можно наловчиться и сделать это даже без отладки.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 17:11 #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);
 
    }
0
12.11.2014, 17:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 17:11
Привет! Вот еще темы с решениями:

Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()
функции передаётся буква алфавита в нижнем регистре и она должна вернуть...

Обращение через индекс Dictionary или IndexOf, что быстрее / производительнее?
Смотрите есть строка: string dic = &quot;abcdefghijklmnopqrstuvwxyz&quot;; мне...

Вставка в строку нескольких символов и удаление символов из строки
не могу найти информацию про это:( какими операторами это делается?

Поиск символа не могу переделать под поиск сочетания символов
Есть код программы на поиск и замену по одному символу.Не могу понять, как...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru