Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
177 / 92 / 25
Регистрация: 04.02.2016
Сообщений: 296
Записей в блоге: 3
1

Вставка подстроки в строку

25.09.2018, 14:15. Показов 835. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день всем!

Поиск по форуму не принес результата.

Есть TextView, куда пользователем с помощью кнопок вводятся цифры (калькулятор). Я хочу, чтобы вводимые данные динамически форматировались при вводе (1234567.89 ---> 1 234 567.89).

Изначально вычитал, что в Java есть метод insert (хотел в нужном месте пробел вставлять), однако, как оказалось, в Android он не применим (студия ругается). Подскажите пожалуйста, если ли какая-то альтернатива без необходимости городить огромный код?

Добавлено через 12 минут
Пробую альтернативный вариант через DecimalFormat, но приложение вылетает при нажатии на кнопку:
Java
1
2
3
4
5
6
7
8
9
//...
DecimalFormat df = new DecimalFormat("#,###,###.00");
//...
//str - строка, полученная из TextView
//resStr - информация о нажатой кнопке, изначально я делал просто mResultField.append(resStr)
 
        str += resStr;
        String formatStr = df.format(str);
        mResultField.setText(formatStr);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2018, 14:15
Ответы с готовыми решениями:

Разделить строку на подстроки с посредством слешей
Нужно разделить строку на подстроки с помощью слешей (оба варианта). Но что-то с регулярками не...

Вставка в строку s из подстроки s1, начиная с позиции n
помогите пожалуйста написать программу очень нужно!!!!буду благодарна!!!! Insert(s,s1,n)...

Вставка подстроки в строку с заданной позиции
Помогите, пожалуйста, расписать функцию insert (); #include <iostream> #include <string> using...

Вставка подстроки в строку, асм-модуль в C
Приветствую. Надеюсь мне снова помогут. Нужно вставить подстроку в строку на позицию. И это все...

8
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
25.09.2018, 18:40 2
Цитата Сообщение от Hugonavy Посмотреть сообщение
str - строка, полученная из TextView
resStr - информация о нажатой кнопке
str += resStr;
То есть, ты к строке прибавляешь кнопку?
0
177 / 92 / 25
Регистрация: 04.02.2016
Сообщений: 296
Записей в блоге: 3
26.09.2018, 10:18  [ТС] 3
Ни в коем случае)) Просто я решил не нагромождать вопрос своим кодом. resStr - это button.getText().toString. Я получаю текст кнопки, обрабатываю эту информацию (напр., чтобы при нажатии на 0 в пустой строке, после него всегда ставился символ ".") и потом вывожу в mResultField. Т.о. все переменные имеют тип String.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
26.09.2018, 10:38 4
он не ест строку, ему надо число.
Java
1
String formatStr = df.format(Double.valueOf(str));
0
177 / 92 / 25
Регистрация: 04.02.2016
Сообщений: 296
Записей в блоге: 3
26.09.2018, 12:10  [ТС] 5
Т.е. принимает число, а возвращает строку? (formatStr типа String) Попробовал, частично работает. Перестала работать "." и после ввода 5й цифры вылетает. Первые 4 введенные цифры форматирует как надо

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
public void onNumberClick(View view) {
        Button button = (Button)view;
        String btn = button.getText().toString();
        String str = mResultField.getText().toString();
 
        int index = str.lastIndexOf(".");
        if(str.length() < 11){
            if(btn.equals(".")){ 
                if(index == -1){    
                    if(str.length()== 0){ 
                        mResStr = "0"+btn;
                    } else{
                        mResStr = btn; 
                    }
                }
            } else if(btn.equals("0") && str.length()== 0){ 
                mResStr = btn+".";
            } else {    
                mResStr = btn;  
            }
        }
 
        //mResultField.append(mResStr);
 
        str += mResStr;
        String formatStr = df.format(Double.valueOf(str));
        mResultField.setText(formatStr);
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
26.09.2018, 17:37 6
Чтобы понять, почему вылетает, ставишь точки останова в отладчике, смотришь переменные, читаешь ошибки.
Несложно.
Мне лень, сорян.
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
29.09.2018, 02:18 7
Цитата Сообщение от +1 Посмотреть сообщение
он не ест строку
какой привередливый
1
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 1
02.10.2018, 09:43 8
Сделай проще:
Например у тебя есть строка mainStr куда ты вводишь символы, в этой строке не надо ничего форматировать т.к. если надо удалить, то в этой строке и удалять будешь.
При каждом нажатии кнопки калькулятора сделай обработчик который будет форматировать строку mainStr и результат каждый раз при нажатии кнопок помещать в твой textView.
А форматировать вывод на экран в textView можно сделать через "String.format"
Вот так примерно:
String mainStr = null;
double number = 1234567.89;
mainStr = String.format("decimal: %,.2f",number);
System.out.println(mainStr);
// decimal: 1 234 567,89
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.10.2018, 10:59 9
Цитата Сообщение от MyTreeNotes Посмотреть сообщение
Сделай проще
"проще" - это хранить в виде double, а не строкой

но ТС хочет что-бы все было ну прямо в один метод с парой строк, горе от ума короче
0
02.10.2018, 10:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2018, 10:59
Помогаю со студенческими работами здесь

JavaScript!? Работа со строками, вставка подстроки в строку, prototype!?
функция по идее должна вставлять подстроку в строку напр в. каждый 5-ый элемент исходной строки,...

Вставка подстроки в строку (раздельная компиляция Turbo Pascal и TASM)
В общем, было вот задание написать код в ассемблере и паскале, который будет выполнять следующую...

Реализовать функцию - Insert(s, s1, n). Вставка в строку s подстроки s1, начиная с позиции n
Функция - Insert(s,s1,n). Вставка в строку s подстроки s1, начиная с позиции n (аналогичная...

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru