如何删除TextView的最后一行?

时间:2018-06-27 14:20:15

标签: java android textview

我正在尝试删除\替换TextView的最后一行,但是我想要一种更快的方法。 例如,我发现了这一点:

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

但是我想更快地执行此操作,而不将数据从Textview复制到字符串值,并且不要使用Sting.lastIndexOf(因为它是在字符串中搜索)。

有人可以帮我吗?

我的问题不是重复的问题,因为我想要一种不使用字符串类型的方法!

3 个答案:

答案 0 :(得分:1)

我建议使用您自己的实现覆盖bash: node_1=my_host-010.test.edu.com: command not found 1 bash: node_2=my_host-110.test.edu.com: command not found 2 bash: node_3=my_host-004.test.edu.com: command not found 3 类:

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"));

Try it online.

答案 1 :(得分:0)

使用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") )));
}

答案 2 :(得分:0)

尝试一下:

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());