**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
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上搜索了一个解决方案,但什么也没找到。
1条答案
按热度按时间to94eoyn1#
你要找的是一个正则表达式。对他们做些研究!它们非常有用,而且不仅仅是在特定的匹配之间找到东西。在javascript(javascript不是java,我对java没有太多经验)中,您需要的匹配是
/:.*:/
.这对于javascript可能有所不同,但让我详细分析一下:
**这在java中很可能是不同的,所以不要在这里浪费时间,自己做一些研究。
首先,它被/包围,因为这就是您通知js您正在寻找正则表达式的方式。
第二,点(.)意味着您在一行中查找它0次或更多次。所以如果我把/.s/放进去,那么它将匹配's'、'ssss'和'ss'。
最后,*是通配符。通配符可以匹配任何东西。***将匹配任何字符。不管是字母、数字、空格,通配符总是在正则表达式中捕捉到它。所以最终,
:.*:
将捕获:emoji:
s。实际上,我有一个小聊天项目,我正在工作,所以这个问题是有点相关的我!:sweat_smile: