Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
180 / 95 / 25
Регистрация: 04.02.2016
Сообщений: 308
Записей в блоге: 3

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

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

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

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

Есть 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2018, 14:15
Ответы с готовыми решениями:

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

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

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

8
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
25.09.2018, 18:40
Цитата Сообщение от Hugonavy Посмотреть сообщение
str - строка, полученная из TextView
resStr - информация о нажатой кнопке
str += resStr;
То есть, ты к строке прибавляешь кнопку?
0
180 / 95 / 25
Регистрация: 04.02.2016
Сообщений: 308
Записей в блоге: 3
26.09.2018, 10:18  [ТС]
Ни в коем случае)) Просто я решил не нагромождать вопрос своим кодом. resStr - это button.getText().toString. Я получаю текст кнопки, обрабатываю эту информацию (напр., чтобы при нажатии на 0 в пустой строке, после него всегда ставился символ ".") и потом вывожу в mResultField. Т.о. все переменные имеют тип String.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
26.09.2018, 10:38
он не ест строку, ему надо число.
Java
1
String formatStr = df.format(Double.valueOf(str));
0
180 / 95 / 25
Регистрация: 04.02.2016
Сообщений: 308
Записей в блоге: 3
26.09.2018, 12:10  [ТС]
Т.е. принимает число, а возвращает строку? (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
Чтобы понять, почему вылетает, ставишь точки останова в отладчике, смотришь переменные, читаешь ошибки.
Несложно.
Мне лень, сорян.
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
29.09.2018, 02:18
Цитата Сообщение от +1 Посмотреть сообщение
он не ест строку
какой привередливый
1
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 1
02.10.2018, 09:43
Сделай проще:
Например у тебя есть строка 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
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.10.2018, 10:59
Цитата Сообщение от MyTreeNotes Посмотреть сообщение
Сделай проще
"проще" - это хранить в виде double, а не строкой

но ТС хочет что-бы все было ну прямо в один метод с парой строк, горе от ума короче
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2018, 10:59
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru