gpt4 book ai didi

java - 如何在聊天应用程序中简单地匹配确切的单词

转载 作者:行者123 更新时间:2023-11-30 09:35:06 24 4
gpt4 key购买 nike

嘿,我有一些问题要找到那个笑脸代码的确切 Imotion(Facebook)..我放了我的 Snippat 代码:

private static final HashMap<String, Integer> smilyRegexMap = new HashMap<String, Integer>();

static{
smilyRegexMap.put( ":-)" , R.drawable.fb_smile);
smilyRegexMap.put( ":)",R.drawable.fb_smile);
smilyRegexMap.put( ":-]" , R.drawable.fb_smile);

smilyRegexMap.put( ":-(", R.drawable.fb_frown);
smilyRegexMap.put( ":(" , R.drawable.fb_frown);
smilyRegexMap.put( ":-[" , R.drawable.fb_frown);

smilyRegexMap.put( ":-P" , R.drawable.fb_tounge);
smilyRegexMap.put( ":p", R.drawable.fb_tounge);

smilyRegexMap.put( ":-D" , R.drawable.fb_grin);
smilyRegexMap.put( ":D" , R.drawable.fb_grin);

smilyRegexMap.put( ":-O" , R.drawable.fb_gasp);
smilyRegexMap.put( ":*" , R.drawable.fb_gasp);

smilyRegexMap.put( ";-)" , R.drawable.fb_wink);
smilyRegexMap.put( ";)" , R.drawable.fb_wink);
smilyRegexMap.put( ":putnam:" , R.drawable.fb_putnam);
}

//=========================================== ============

public static CharSequence addSmileySpans(Context ch, CharSequence your_recieved_message)
{
//smilyRegexMap = new HashMap<Integer, String>();

System.out.println("==In Spannable Function..........");
SpannableStringBuilder builder = new SpannableStringBuilder(your_recieved_message);

System.out.println("==================Size of Smily : "+ smilyRegexMap.size());
@SuppressWarnings("rawtypes")
Iterator it = smilyRegexMap.entrySet().iterator();
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry pairs = (Map.Entry) it.next();

Pattern mPattern = Pattern.compile((String) pairs.getKey(),Pattern.CASE_INSENSITIVE);
Matcher matcher = mPattern.matcher(your_recieved_message);

while (matcher.find()) {
Bitmap smiley = BitmapFactory.decodeResource(ch.getResources(), ((Integer) pairs.getValue()));
builder.setSpan(new ImageSpan(smiley), matcher.start(), matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return builder;
}

我已经调用了这个函数:

addSmileySpans(this,"Hi i m Happy :-)  ;-)  :p   :putnam:  ");

===>> 我的问题是,当我输入 :putnam: 时,结果如下

嗨,我很高兴 enter image description here enter image description here enter image description here enter image description here enter image description here

//===========================================

Ookeyyy...现在我使用此代码:::

Bitmap smiley = BitmapFactory.decodeResource(ch.getResources(), ((Integer) pairs.getValue()));
Object[] spans = builder.getSpans(matcher.start(), matcher.end(), ImageSpan.class);
if (spans == null || spans.length == 0) {
builder.setSpan(new ImageSpan(smiley), matcher.start(), matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}

但是它给出了一些错误::

当输入 :putnam:它的结果是 enter image description here乌特南:

最佳答案

  1. 您应该按照从“最大微笑代码”到“最小微笑代码”的顺序对微笑进行排序。
  2. 当你找到下一个模式时,只要检查一下,如果这段文本已经被 span 覆盖了:
Object[] spans = builder.getSpans(matcher.start(), matcher.end(), Object.class);
if (spans == null || spans.length == 0) {
//add new image span here
}

关于java - 如何在聊天应用程序中简单地匹配确切的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com