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

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

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

Разбиение строки - Программирование Android

12.12.2015, 16:54. Просмотров 863. Ответов 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.
Буду рад любой помощи!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2015, 16:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбиение строки (Программирование Android):

String разбиение строки - Программирование Android
Добрый день! Есть строка: "\u0003Q\u0004 \u001ERd\u0002000000,U,P, ,1001,A77 ,1 , 2338, , 0, ,0, ...

Разбиение ListView - Программирование Android
Здравствуйте. Есть ListView с записями. Каждая запись имеет свою дату. Хочу разделить этот список по датам. Ну например блок записей...

Разбиение строки - Delphi
Есть строка типа 123123:6542364:2366565326:623632632:abcd и есть 5 editов на форме, как можно разить эту строку на 5 частей и поместить в...

Разбиение строки... - Pascal
Текст задачки приблизительно такой: Необходимо строку из 50 букв. Программа должна разделить эту строку на 5 строк по 10 букв... т.е. к...

Разбиение строки - C++
Доброго времени суток. Я новичок в кодинге. Передо мной такая задача: есть строка str с числами, разделенными через пробел. ...

Разбиение строки - Visual Basic
как разбить строку ("432,543,345") на части по запятым , и записать эти числа как переменные?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 03:06  [ТС] #16
vindigo, понятней, может и понятней, но задание никто не отменял)
а по заданию подсчет строки с символа "["
так бы не было бы проблем)
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
14.12.2015, 08:01 #17
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
задачка понравилась - прикольная. :-)
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
    private static int subStrLength = 11;
    private static String s1 = "Шла Саша по шоссе и сосала сушку.";
    
    private static String infoTpl = "[%d/%d] = ";
 
    public static void main(String[] args) throws Exception {
 
        String strReport;
        for (int i=0; s1.length() > 0; i++) {
            //how many chars it spends for the info.
            int subStrShift = getSunStrShift(i,subStrLength);
            
            //compare lengths and say about it if it needs.
            if (i == 0 && subStrShift >= subStrLength) {
                Exception e = new Exception("строка мала для такого info");
                throw e;
            }
 
            if (subStrLength-subStrShift > s1.length()) {
                strReport = String.format(infoTpl, i,s1.length()) + s1.substring(0);
                s1 = "";
            } else {
                strReport = String.format(infoTpl, i,subStrLength) + s1.substring(0, subStrLength-subStrShift);
                s1 = s1.substring(subStrLength-subStrShift);
            }
 
            System.out.println(strReport);
        }
    }
    
    private static int getSunStrShift (int subStrIndex, int subStrLength) {
        String info = String.format(infoTpl, subStrIndex, subStrLength);
        return info.length();
    }
тока к андроиду не имеет никакого отношения. :-)
там надо бы еще пару проверок доделать - вроде понятно и не сложно.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
14.12.2015, 10:40 #18
Приветствую, о мои маленькие любители простыней
Java
1
2
3
4
5
int len = 5;
Matcher m = Pattern.compile("(.{" + (8-len) + "})").matcher("Шла Саша по шоссе и сосала сушку");
int count = 1;
while (m.find())
    System.out.println("[" + count++ + "/" + len + "] = " + m.group());
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
14.12.2015, 12:17 #19
а-ча-ча
Java
1
2
3
        int len = 3;
        String[] arr =s.split(String.format("(?<=\\G.{%d})", len));
for (String str: arr) System.out.println(str);
0
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 12:17  [ТС] #20
bastrakov, это должно быть как андроид приложение
просто мне надо хотя бы с функционалом разобраться
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
14.12.2015, 12:32 #21
Цитата Сообщение от Паблито Посмотреть сообщение
а-ча-ча
Не катит 3 строки, где s? и for в одну строку
0
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 12:34  [ТС] #22
Паблито, а что означают вот эта строка? (?<=\\G.{%d})"
просто про сплит метод я читал, но там же он вроде только по определенным знакам разделяет
разве нет?
и так же я понимаю, что если к строке добавит необходимую конструкцию([1\20] = ), то все непраавильно будет работать?
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
14.12.2015, 12:35 #23
s это строка, очевидно, нет?
for вообще можно выкинуть, массив строк получен, что с ним дальше делать тс похоже и сам не знает

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

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

Добавлено через 1 минуту
я понимаю, что тут мои проблемы никому не нужны)
ладно, все равно спасибо за код
буду дальше думать как его модифицировать
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
14.12.2015, 14:10 #29
2Rube: Ваш ответ не полон. теперь пойдите и обьясните регэкспы топикстартеру. :-)
к слову, на perl я закончил писать 15 лет назад, но книгу до сих пор не отдал - романтичное время начала web-а. :-)
0
umbrto
2 / 2 / 0
Регистрация: 04.02.2014
Сообщений: 71
14.12.2015, 14:14  [ТС] #30
Rube, а если строки будет больше 8 символов, то тогда код крашится)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2015, 14:14
Привет! Вот еще темы с ответами:

Разбиение строки - C#
есть к примеру в файле есть такие строки: 1,а,б 2,ввап,ииьб нужно разобрать каждую строку, т.е. сначала до первой запятой, потом от...

Разбиение строки - Lazarus
Как разбить строку &quot;12345&quot; в лазарус на отдельные символы ?

разбиение строки - PHP
Доброго времени суток. В бд в одном поле хранится к примеру три числа через &quot;;&quot; (10; 20; 30;). И есть три текстовых инпута. Как сделать...

Разбиение строки - C#
Вообщем вот проект () что получилось сделать Задание таково: 5 строк текста перемещаются слева-направо и наоборот, при достижении ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.12.2015, 14:14
Ответ Создать тему
Опции темы

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