Как удалить последнюю строку TextView? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь удалить \ заменить последнюю строку TextView, но Я хочу способ сделать это быстрее . Например я нашел это:

String temp = TextView.getText().toString();
temp.substring(0,temp.lastIndexOf("\n"));

Но я хочу сделать это быстрее, не копируя данные из Textview в строковое значение и не используя Sting.lastIndexOf (потому что его поиск в строке).

Может ли кто-нибудь мне помочь?

Мой вопрос не является дублирующим вопросом, потому что я хочу путь без использования строкового типа !!!

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Попробуйте это:

public String removeLastParagraph(String s) {
    int index = s.lastIndexOf("\n");
    if (index < 0) {
        return s;
    }
    else {
        return s.substring(0, index);
    }
}

и используйте его как:

tv.setText(removeLastParagraph(tv.getText().toString().trim());
0 голосов
/ 27 июня 2018

Я предлагаю перезаписать класс TextView собственной реализацией:

public class CustomTextView extends TextView{
  // Overwrite any mandatory constructors and methods and just call super

  public void removeLastLine(){
    if(getText() == null) return;
    String currentValue = getText().toString();
    String newValue = currentValue.substring(0, currentValue.lastIndexOf("\n"));
    setText(newValue);
  }
}

Теперь вы можете использовать что-то вроде:

CustomTextView textView = ...

textView.removeLastLine();

В качестве альтернативы, поскольку вы, похоже, ищете однострочник без создания String temp по какой-то причине, вы можете сделать это:

textView.setText(textView.getText().toString().replaceFirst("(.*)\n[^\n]+$", "$1"));

Regex объяснение:

(.*)            # One or more character (as capture group 1)
    \n          # a new-line
      [^\n]     # followed by one or more non new-lines
           $    # at the end of the String

$1              # Replace it with the capture group 1 substring
                # (so the last new-line, and everything after it are removed)

Попробуйте онлайн.

0 голосов
/ 27 июня 2018

Используйте System.getProperty("line.seperator") вместо "\ n"

public void removeLastLine(TextView textView) {
    String temp = textView.getText().toString();
    textView.setText(
        temp.substring(0, temp.lastIndexOf(System.getProperty("line.seperator") )));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...