java—我试着这样做:test:,并用discord emojis之类的图像替换它(不起作用)

lf3rwulv  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(197)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

5个月前关门了。
改进这个问题
我试着这样做,你在edittext中写一个特定的词,比如“this is a test:hello:nice”,然后用一个类似于discord的自定义表情符号的图像替换这个词:hello:,来找到我试过的词

for (int i = 0; i < editText.getText.length(); i++)
{
    if (editText.getText.charAt(i) == ':')
    {
        String splitter = editText.getText.toString().split(":");
        String split = splitter[i];

        //To see whats the result
        Toast.makeText(this, split, Toast.LENGHT_SHORT).show;
    }
}

我的代码根本不起作用(没有很好的执行)并且崩溃了,如果我单击backspace并删除“:”它崩溃了。。
然后我试着这样做:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //You maybe think why "a" instad of "i", I was already taken..
                if (editText.getText.toString.charAt[a] == ' ')
                {
                    //To get a new index after a space.
                    index++;
                }
                else
                {
                    StringBuilder stringBuilder = new StringBuilder();
                    stringBuilder.append(editText.getText.toString.split(":")[index]);
                    if (editText.getText.toString.split(":")[index])
                    {
                        Toast.makeText(ChatActivity.this, stringBuilder.toString, 
 Toast.LENHGT_SHORT)
                    }
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {}
        });

它也不起作用,在花了4个小时的时间之后,我放弃了。。把这堆东西放在柱子上。请帮忙
编辑:我在google和youtube上搜索了一个解决方案,但什么也没找到。

to94eoyn

to94eoyn1#

你要找的是一个正则表达式。对他们做些研究!它们非常有用,而且不仅仅是在特定的匹配之间找到东西。在javascript(javascript不是java,我对java没有太多经验)中,您需要的匹配是 /:.*:/ .
这对于javascript可能有所不同,但让我详细分析一下:

**这在java中很可能是不同的,所以不要在这里浪费时间,自己做一些研究。

首先,它被/包围,因为这就是您通知js您正在寻找正则表达式的方式。
第二,点(.)意味着您在一行中查找它0次或更多次。所以如果我把/.s/放进去,那么它将匹配's'、'ssss'和'ss'。
最后,*是通配符。通配符可以匹配任何东西。***将匹配任何字符。不管是字母、数字、空格,通配符总是在正则表达式中捕捉到它。所以最终, :.*: 将捕获 :emoji: s。实际上,我有一个小聊天项目,我正在工作,所以这个问题是有点相关的我! :sweat_smile:

相关问题