Split Строка в Java Android

212
16 декабря 2017, 06:37

По запросу на сервер приходит строка, которую я делю и вывожу на экран:

public void onSuccess(Context c, String result){
    String d = "<pub>"; 
    String[] public = result.split("<pub>");
    for(String pub: public){
        LinearLayout p = getPage(pub);
        main.addView(p);
    }
}

проблема в том, что если сервер возвращает строку без символов переменной d, он по понятным причинам выкидывает из приложения. Не могу написать проверку, чтобы, если возвратилась непонятная строка, он выводил, например, метод error(). Думаю понятно объяснил.

Answer 1

В классе String в Java есть замечательный метод contains(CharSequence s) проверяющий наличие подстроки в строке и возвращающий true при её наличии и false при отсутствии подстроки в строке.

Далее.

Прервать работу можно выкинув исключение.

Для этого исключение нужно сначала создать.

public class SubstringNotFoundException extends Exception {
    //...
}

Далее нужно всех уведомить что Ваш метод может выбрасывать что-то нехорошее

public void onSuccess(Context c, String result) throws SubstringNotFoundException {
    //...
}

Итого получаем:

public void onSuccess(Context c, String result) throws SubstringNotFoundException {
    String d = "<pub>"; 
    if(!result.contains(d))
        throw new SubstringNotFoundException();
    String[] public = result.split(d);
    for(String pub: public){
        LinearLayout p = getPage(pub);
        main.addView(p);
    }
}
Answer 2
private boolean checkStr(String s){
    return s.contains("<pub>");
}
public void onSuccess(Context c, String result){
    if (checkStr(result)){
        //Если в строке присутствует тег <pub> то
        String[] public = result.split("<pub>");
        for(String pub: public){
            LinearLayout p = getPage(pub);
            main.addView(p);
        }
    } else {
        // Иначе
    }
}
READ ALSO
SIP Invalid content length java

SIP Invalid content length java

Все время выбивает при инвайте обратно на пользователя(кинул два метода: форвард - на пользователя, кому звонят, и второй на пользователя,...

179
Как передать параметр в конструктор?

Как передать параметр в конструктор?

Только осваиваю программирование, и возник такой вопрос: Есть некий класс Plane, в котором есть 3 текстуры и нужно выбрать случайнуюИ есть главный...

175
Нужен совет по Android Java

Нужен совет по Android Java

Есть приложения в которым люди выставляют публикации в день один раз

201
Проблема с forEach JSTL(Java EE)

Проблема с forEach JSTL(Java EE)

Здравствуйте возникла проблема с forEach в JSTL

210