如何在字符串中列出所有提及内容

问题描述 投票:1回答:4

[我正在创建一个EditText,当用昵称写@时,可能会提及其他用户,例如在Facebook,Instagram,Twitter等上。例如,在文本中“今天@john和@jane吃了蛋糕” ,我想创建一个带有值“ john”和“ jane”的ArrayListI tried this,但是没有用。该怎么做才能做到这一点?

java android kotlin
4个回答
4
投票

使用此正则表达式。它查找在@后面的单词字符组(字母,数字,下划线)。

val atMentions: List<String> = "(?<=@)\\w+".toRegex().findAll(editText.text).map { it.value }

如果需要定义一组不同的文字字符,请将上面的\\w替换为[\\w],然后将其他可接受的字符放在w之后。


0
投票

我认为有2个不错的选择:


0
投票
public static ArrayList<String> getMentionedNames(String text){
        String[] tmp=text.split("@");
        ArrayList<String> arrayList=new ArrayList<>();
        for (int i=1;i<tmp.length;i++){
            String first=tmp[i].split(" ")[0];
            arrayList.add(first);
        }
        return arrayList;
    }

0
投票

你可以做

© www.soinside.com 2019 - 2024. All rights reserved.