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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
#1

Разбиение строки - Android

12.12.2015, 16:54. Просмотров 778. Ответов 40
Метки нет (Все метки)

И снова здравствуйте, форумчане.
Делал одно приложение и возникла загвоздка. Приложение принимает строку и разделяет ее на строки вида:[x/y] - z,
где х - номер строки, у - макс кол-во символов в строке, z - часть исходного текста.
Идея такая, что пользователь вводит строку, задает макс кол-во символов и нажимает на кнопку, которая это конвертирует.
Так вот проблема в том, что я не понимаю как осуществить разделение строки на несколько строк. Пробовал методом split(String regex), но он разделяет только по определенным значениям, а мне надо что бы разделяло по кол-во символов в строке.
Ну вот пример:
Кликните здесь для просмотра всего текста
текст: “Шла Саша по шоссе и сосала сушку.”,
максимальное количество символов в строке: 20

Результат выполнения
[1/20] - Шла Саша по
[2/20] - шоссе и со
[3/20] - сала сушку.

Чуть не забыл код:
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity implements OnClickListener {
    Button btnWrite, btnRead;
    EditText edit1, edit2;
    String filePath, Note;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnWrite = (Button)findViewById(R.id.btnWrite);
        btnRead = (Button)findViewById(R.id.btnRead);
        edit1 = (EditText)findViewById(R.id.edit1);
        edit2 = (EditText)findViewById(R.id.edit2);
        btnRead.setOnClickListener(this); 
        btnWrite.setOnClickListener(this);}
    @Override
    public void onClick(View v) {
        switch(v.getId())
        {
        case R.id.btnWrite:
            try {   
                Note = edit1.getText().toString();
                String s1 = edit2.getText().toString(); 
                double res = Double.parseDouble(s1);
                
                
        } catch (IOException e) {               
            Toast.makeText(this, e.getMessage(),Toast.LENGTH_LONG).show(); 
            }break;
        case R.id.btnRead:
            Intent anIntent;
            anIntent = new Intent(this,Result.class);
            startActivity(anIntent);
            break;}
        
    }
    
    
 
}

Кнопка Write конвертирует, вторая переходит на другое активити с результатом.
То есть строка должна разбиться на строки, в которых кол-во символов меньше,чем введенное значение в поле edit2.
Буду рад любой помощи!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2015, 16:54     Разбиение строки
Посмотрите здесь:

Разбиение ListView Android
Парсинг JSON-строки и вывод данных из строки Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
14.12.2015, 12:32     Разбиение строки #21
Цитата Сообщение от Паблито Посмотреть сообщение
а-ча-ча
Не катит 3 строки, где s? и for в одну строку
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 12:34  [ТС]     Разбиение строки #22
Паблито, а что означают вот эта строка? (?<=\\G.{%d})"
просто про сплит метод я читал, но там же он вроде только по определенным знакам разделяет
разве нет?
и так же я понимаю, что если к строке добавит необходимую конструкцию([1\20] = ), то все непраавильно будет работать?
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
14.12.2015, 12:35     Разбиение строки #23
s это строка, очевидно, нет?
for вообще можно выкинуть, массив строк получен, что с ним дальше делать тс похоже и сам не знает

Добавлено через 1 минуту
Цитата Сообщение от umbrto Посмотреть сообщение
просто про сплит метод я читал, но там же он вроде только по определенным знакам разделяет
разве нет?
ну если у меня не по знакам разделил, то наверное ответ - не только
вместо вопроса лучше бы загуглил
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 13:13  [ТС]     Разбиение строки #24
Паблито, про сплит метод почтал
но все равно ваш код не совсем корректен
по заданию надо обязательно выводить [1\20] = и т.д.
то есть должна учитываться еще и длина начала
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
14.12.2015, 13:20     Разбиение строки #25
что такое длина начала?
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 13:27  [ТС]     Разбиение строки #26
это вот эта конструкция [1\20] =
которая содержит номер строки и кол-во символов в строке
длина вот этой конструкции тоже должна учитываться
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
14.12.2015, 13:31     Разбиение строки #27
я показал как в одну строку кода разбить строку текста на массив строк
ты не можешь самостоятельно оформить что бы в цикле перед этими строками выводило номер и длину?

Добавлено через 1 минуту
мой ответ можешь вообще пропускать
я увидел задачу которая мне была интересной, решил ее с помощью регулярного выражения
освежил себе память, если
Цитата Сообщение от umbrto Посмотреть сообщение
код не совсем корректен
просто пропусти его и делай в 25 строк
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 13:34  [ТС]     Разбиение строки #28
просто что бы выводило номер и длину могу
а что бы длина вот этой строки с номером и длинной учитывались при разбиении строки - нет
ведь эта строка может содержать и такое кол-во символов [1\1] =
и такое [2\100] =

Добавлено через 1 минуту
я понимаю, что тут мои проблемы никому не нужны)
ладно, все равно спасибо за код
буду дальше думать как его модифицировать
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
14.12.2015, 14:10     Разбиение строки #29
2Rube: Ваш ответ не полон. теперь пойдите и обьясните регэкспы топикстартеру. :-)
к слову, на perl я закончил писать 15 лет назад, но книгу до сих пор не отдал - романтичное время начала web-а. :-)
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 14:14  [ТС]     Разбиение строки #30
Rube, а если строки будет больше 8 символов, то тогда код крашится)
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
14.12.2015, 14:39     Разбиение строки #31
2umbrto: "я понимаю, что тут мои проблемы никому не нужны)"
правильно я понимаю, что мой пример кода Вы не запускали?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
14.12.2015, 14:55     Разбиение строки #32
Цитата Сообщение от umbrto Посмотреть сообщение
а если строки будет больше 8 символов, то тогда код крашится)
а если подумать можно и самому остальное дописать
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 20:10  [ТС]     Разбиение строки #33
bastrakov, извините, но я вас спутал с другим юзером
конечно запускал ваш код и он работает
просто я обратил внимание сначала на компактность кода и запустил код Паблито и Рубе
а ваш код работает и спасибо вам за это
единственное, что мне надо будет перенести теперь это в андроид приложение)
если что, не могли бы вы в будущем ответить на пару вопросов, а то при "транспортировке" кода у меня полюбому возникнут ошибки)

Добавлено через 14 минут
хотя я вспомнил почему я так же про ваш код ничего не сказал
вы попробуйте разбить вот такую строку "Меня зовут Стас и я хочу научиться кодить"
и выведет
[1/20] = Меня зовут
[2/20] = Стас и я хо
[3/20] = чу научитьс
[4/8] = я кодить
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.12.2015, 05:55     Разбиение строки #34
извините за странный вопрос: это Ваша работа, Вы учитесь, или занимаетесь в виде хобби?

в коде надо дописать 3 момента:
1) завершение не совсем правильно (забыл я про это) - надо прибавить длинну начальной информации.
2) дописать пару проверок при крайних условиях. например при входной строке = null.
3) длинна начальной инфорации будет расти, при увеличении входной строки. одна цифра - две цифры - три цифры. и если выставить маленький размер разбиения, то ошибка выскочит не в начале (проверка в коде стоит), а сильно потом - тоже обработайте.

к слову, мы не зря тут устроили "базар по поводу". попробуйте разобраться, что за "короткий пример" Вам предложили. ЕСЛИ вы учитесь, то это Вам пригодится.

про перенос кода в андроид. а Ваш пример, который Вы кидали здесь, Вы как собирались переносить?
кстати, студия какая? в смысле Ваш java-код в чем написан?
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
15.12.2015, 14:45  [ТС]     Разбиение строки #35
eclipse
у меня слабый комп для студии
а про перенос: я перенес вроде бы все правильно, но чего то прилжение вылетает
с вашим кодом как сдам сесссию разберусь)
времени вообще не хватает
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
15.12.2015, 15:53     Разбиение строки #36
Цитата Сообщение от umbrto Посмотреть сообщение
у меня слабый комп для студии
Я тут создавал тему как сделать чтоб студия заработала. Сейчас летает, не нарадуюсь.
а вот нашел.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.12.2015, 16:42     Разбиение строки #37
для java кусков, который например я писал для Вас, я использую NetBeans - очень легкий и быстрый. подсадил на него молодую команду. проверено, нормально работает на 2гб памяти на старом железе. и я даже работал с флешки live-linux, на чужом ноуте - летает все.
это было про старый комп и код, который не зависит от android.

про учебу. проблем нет, кидайте вопросы - будем подкидывать чего. только постарайтесь разбираться в кусках кода, который Вам кидают. не просто запускать, а именно построчно понимать, что там и зачем.
удачи!
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
15.12.2015, 16:50     Разбиение строки #38
Цитата Сообщение от bastrakov Посмотреть сообщение
для java кусков, который например я писал для Вас, я использую NetBeans
А для кусков, которым нужен android sdk? Тут же запушена АС? Или закрывается NetBeans и запускается АС? Что то что это имхо извращение)
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.12.2015, 18:42     Разбиение строки #39
ну я не знаю, что для Вас извращение, а ко мне тут недавно приходил мастер, который двери ставит, так у него 2 дрели, и он сверла не меняет, так 2 по очереди и использует.
у меня тоже запущены и NetBeans и AS одновременно.
попробуйте - Вам понравится. :-) сборка простого java проекта идет на пару порядков быстрее.
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
15.12.2015, 19:08  [ТС]     Разбиение строки #40
да я каждый код, который мне дают я разбираю построчно)
просто сейчас идет сессия и уже ночью не было времени даже 10 минут на то, что бы разобраться
спасибо Вам большое

Добавлено через 6 минут
Rube, спасибо почиитаю
Yandex
Объявления
15.12.2015, 19:08     Разбиение строки
Ответ Создать тему
Опции темы

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