Sre*_*non 6 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 + "");
}
});
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式从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
...
}
Run Code Online (Sandbox Code Playgroud)
(#\\w+)匹配所有以 开头的主题标签#。
这个也快。

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);
}
}
Run Code Online (Sandbox Code Playgroud)
从 获取文本editText,将其拆分为单独的单词,创建以 # 开头的所有单词的列表
正如 Yazan 提到的,一个很好的替代方案if (word.substring(0, 1).equals("#")是if (word.startsWith("#")
定时

| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |