Как отбросить все после второй точки?

69
04 июня 2021, 20:40

Я из ListView вытягиваю значения между двумя знаками $ . Проблема в чем ниже представлен код и он хорошо работает . Но если вдруг будет стоять две точки вот пример 10.978.86 то программа летит.(потому что складываются числа) Как отбросить все после второй точки включая точку чтобы было 10.978

private String s = "text from item";
   lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                            // берём строку из списка по нажатой позиции
                            String row = titleList.get(i);
                            // находим первый $
                            int start = row.indexOf("$");
                            if (start == -1) { // если не нашли
                                Toast.makeText(Main3Activity.this, "Not have data", Toast.LENGTH_SHORT).show();
                                return;
                            }
                            // находим второй $
                            int end = row.indexOf("$", start + 1);
                            if (end == -1) { // если не нашли
                                Toast.makeText(Main3Activity.this, "Not have data", Toast.LENGTH_SHORT).show();
                                return;
                            }
                            // вырезаем кусок из строки по найденным позициям
                            // и присваиваем переменной
                            s = row.substring(start + 1, end);
                            s = s.replaceAll(",", ".");
                            Toast.makeText(Main3Activity.this, (s), Toast.LENGTH_SHORT).show();
                        }
                    });

/////

// находим первый .
                        int start1 = s.indexOf(".");
                        if (start1 == -1) { // если не нашли
                            Toast.makeText(Main3Activity.this, "Not have data", Toast.LENGTH_SHORT).show();
                            return;
                        }
                        // находим второй .
                        int end1 = s.indexOf(".", start1 + 1);
                        if (end1 == -1) { // если не нашли
                            Toast.makeText(Main3Activity.this, "Not have data", Toast.LENGTH_SHORT).show();
                            return;
                        }
                        // вырезаем кусок из строки по найденным позициям
                        // и присваиваем переменной
                        s = s.substring(0, end1);
                        Toast.makeText(Main3Activity.this, s, Toast.LENGTH_SHORT).show();
     }
                });
Answer 1
   public  String cutSecondDot(String str){
    int firstDot= str.indexOf(".");
    if(firstDot==-1) return str;
    int secondDot=str.indexOf(".",firstDot+1);
    if(secondDot==-1) return str;
    return str.substring(0,secondDot);
}
READ ALSO
Не очевидное поведение дженериков

Не очевидное поведение дженериков

Есть вот такой java класс:

114
Максимальная длина REST запроса в Retrofit

Максимальная длина REST запроса в Retrofit

Есть следующий интерфейс

89
В RecyclerView криво масштабируются изображения

В RecyclerView криво масштабируются изображения

В RecyclerView ,макет которого состоит из текста + изображения некоторые ImageView криво располагаютсяКак я понял, это связано с RecyclerView, т

123
Получить список ребер между двумя вершинами графа

Получить список ребер между двумя вершинами графа

Нужно реализовать метод getPath так чтобы он возвращал список ребер, путь не обязательно должен быть оптимальным, но должно учитываться isDirected...

109