从 EditText 中提取一行

Posted

技术标签:

【中文标题】从 EditText 中提取一行【英文标题】:Extract a line from an EditText 【发布时间】:2012-06-30 03:03:18 【问题描述】:

我们如何从多行EditText 中提取一行?

我尝试过这种方式,但我知道这不是一个好习惯:

String street1 = "";
String street2 = "";
EditText streetEt = ((EditText) findViewById(R.id.street));
ExtractedText extractedText = new ExtractedText();
ExtractedTextRequest req = new ExtractedTextRequest();
int endOfLineOffset = 0;

req.hintMaxLines = 1;
streetEt.extractText(req, extractedText);
endOfLineOffset = extractedText.partialEndOffset;
street1 = extractedText.toString();
...

有没有更简单的方法来做到这一点,比如在字符串中查找\n

【问题讨论】:

我有点困惑,你是不是要从 TextView 中提取文本? 啊,请忽略我下面的回答:D 我只是重读了您的问题,抱歉 其实可以直接使用getText()方法,然后在THAT字符串中搜索\n即可。 杰克的回答似乎不错 How do I get the text at a specific line in a TextView的可能重复 【参考方案1】:

尝试使用String.split()。代码示例:

String multiLines = streetEt.getText().toString();
String[] streets;
String delimiter = "\n";

streets = multiLines.split(delimiter);

现在您有了一系列街道。

例如,假设您的EditText 显示为“1st St.\nHighway Rd.\nUniversity Ave”。 (或者这 3 条街道是否被换行符隔开,而不是您实际看到 \n)。按照我提供给你的代码示例,

multiLines 变为“1st St.\nHighway Rd.\nUniversity Ave.”

streets = multiLines.split(delimiter); 用街道名称填充数组streets,即

streets[0] = "第一街" streets[1] = "Highway Rd." streets[2] = "大学大道。"

【讨论】:

这比我的回答要好得多。 我正在尝试使用您的代码在 android 的编辑文本中实现搜索功能。但我无法搜索数组列表中的下一个元素。我还发布了一个问题 ***.com/questions/40670878/… 这个答案不完整。用户可以输入很长的序列,当它到达当前行的末尾时,它会继续下一个。所以我们可以有几行没有任何新的行符号。正确答案:***.com/a/6273546/1140997【参考方案2】:

试试这个:

String text = streetEt.getText();

String firstLine = text.substring(0,text.indexOf("\n"));

【讨论】:

【参考方案3】:

试试这个,

String text=editText1.getText().toString().replace("\n", " ").trim();

【讨论】:

以上是关于从 EditText 中提取一行的主要内容,如果未能解决你的问题,请参考以下文章

EditText光标默认在第一行,edittext不显示键盘 ,edittext失去焦点

android------解决editText只输入一行和textView不显示过多的内容

android------解决editText只输入一行和textView不显示过多的内容

从 JSON 字符串在 EditText 上显示 HTML

android studio 编写时textview 和edittext无法在同一行显示

从 List Adapter Android 中的按钮单击编辑 EditText