从EditText获取所有主题标签

时间:2014-10-29 13:41:16

标签: java android hashtag

我有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 + "");
                }
            });

2 个答案:

答案 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("#")

时间

enter image description here

答案 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+)匹配以#开头的所有主题标签。

这个也很快。

enter image description here