我有EdiText
。用户可以在其中提及主题标签。我想获取这些主题标签并将其添加到ArrayList
。如何从EdiText
获取这些主题标签。
假设我的edittxtmsg
包含#Stackoverflow slove me #hashtag #problem
我想要这些主题标签:#Stackoverflow #hashtag #problem
edittxtmsg.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
int strLenght = s.toString().length();
int available = 140 - strLenght;
setAvailableSpace(available);
if (available < 0) {
s.delete(strLenght - 1, strLenght);
}
mfinalmsg = s.toString();
}
private void setAvailableSpace(int available) {
// TODO Auto-generated method stub
tvcount.setText(available + "");
}
});
答案 0 :(得分:3)
String text = editText.getText().toString();
String[] words = text.split(" ");
List<String> tags = new ArrayList<String>();
for ( String word : words) {
if (word.substring(0, 1).equals("#")) {
tags.add(word);
}
}
从editText
获取文本,将其拆分为单独的单词,创建以#
正如Yazan所提到的,if (word.substring(0, 1).equals("#")
的一个很好的替代方法是if (word.startsWith("#")
时间
答案 1 :(得分:3)
您可以使用正则表达式从EditText
获取所有主题标签:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String text = editText.getText().toString();
String regexPattern = "(#\\w+)";
Pattern p = Pattern.compile(regexPattern);
Matcher m = p.matcher(text);
while (m.find()) {
String hashtag = m.group(1);
// Add hashtag to ArrayList
...
}
(#\\w+)
匹配以#
开头的所有主题标签。
这个也很快。