@me 如何处理

红薯 分享了这个代码 ,我觉得很好 在这个社区与大家分享 。


static Pattern referer_pattern = Pattern.compile("@([^@^\\s^:]{1,})([\\s\\:\\,\\;]{0,1})");//@.+?[\\s:]

/**
* 处理提到某人 @xxxx
*
* @param msg 传入的文本内容
* @param referers 传出被引用到的会员名单
* @return 返回带有链接的文本内容
*/
public static String _GenerateRefererLinks(String msg, List<Long> referers) {
StringBuilder html = new StringBuilder();
int lastIdx = 0;
Matcher matchr = referer_pattern.matcher(msg);
while (matchr.find()) {
String origion_str = matchr.group();
//System.out.println("-->"+origion_str);
String str = origion_str.substring(1, origion_str.length()).trim();
//char ch = str.charAt(str.length()-1);
//if(ch == ':' || ch == ',' || ch == ';')
// str = str.substring(0, str.length()-1);
//System.out.println(str);
html.append(msg.substring(lastIdx, matchr.start()));

User u = null;
@SuppressWarnings("unchecked")
List<User> users = User.INSTANCE.LoadList(User.CheckUsername(str));
if (users != null && users.size() > 0) {
u = users.get(0);
for (User ref : users) {
if (ref.getThis_login_time() != null && u.getThis_login_time() != null &&
ref.getThis_login_time().after(u.getThis_login_time())) {
u = ref;
}
}
}
if (u == null) {
u = User.GetByIdent(str);
}

if (u != null && !u.IsBlocked()) {
html.append("<a href='" + LinkTool.user(u) + "' class='referer' target='_blank'>@");
html.append(str.trim());
html.append("</a> ");
if (referers != null && !referers.contains(u.getId()))
referers.add(u.getId());
} else {
html.append(origion_str);
}
lastIdx = matchr.end();
//if(ch == ':' || ch == ',' || ch == ';')
// html.append(ch);
}
html.append(msg.substring(lastIdx));
return html.toString();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值