首页 新闻 会员 周边

如何过滤文本中的表情

0
悬赏园豆:40 [已解决问题] 解决于 2012-04-03 22:36

例如 在新浪微博上的一条微博信息:,“今天天气正好[哈哈],可惜明天要下雨。[鄙视]”

要将其中的[哈哈],[鄙视]过滤掉,还有其他白表情哦。。。。

小咩快跑的主页 小咩快跑 | 初学一级 | 园豆:23
提问于:2012-03-31 10:20
< >
分享
最佳答案
1
var message = "今天天气正好[哈哈],可惜明天要下雨。[鄙视]";

//方案一:效率低(多次遍历),但是简单易懂

string[] emotions = { "[哈哈]", "[调皮]" };
string cleanMessage = message;
foreach (var emotion in emotions)
{
cleanMessage = cleanMessage.Replace(emotion, string.Empty);
}

//方案二:只遍历一次message

string[] emotions = { "哈哈", "调皮" };  //注意跟上面不同
var cleanMessage = new StringBuilder();
int position = 0;
while (position < message.Length)
{
if (message[position] == '[')
{
var part = message.Skip(position + 1).TakeWhile(c => c != ']').ToArray();
if (emotions.Any(e => e.SequenceEqual(part)))
{
position += part.Length + 2;
continue;
}
}

cleanMessage.Append(message[position]);
position++;
}
收获园豆:30
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-03-31 10:51

第二种好。

另外楼主会不会有这样的要求:不是所有[]中间的文字都是表情吧,应该还会要有一个字典。

吕飞 | 园豆:280 (菜鸟二级) | 2012-03-31 17:14

@吕飞: 当然不是所有[]中间都是表情了,这个我已经考虑到了啊,你看那个[鄙视]就不会被过滤掉,因为我的表情字典里没有[鄙视],只有[哈哈]和[调皮]。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-31 17:33
其他回答(3)
0

可以用正则表达式的撒

yangtam | 园豆:369 (菜鸟二级) | 2012-03-31 12:39
0

用正则也行,\[(哈哈|调皮)\]

君之蘭 | 园豆:230 (菜鸟二级) | 2012-04-01 12:30
0

首先建立一个表情的字典、然后用正则表达式,去过滤

收获园豆:10
az235 | 园豆:8483 (大侠五级) | 2012-04-01 15:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册