package com.lh.fly.common.utils; import android.content.Context; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.util.Linkify; import java.util.regex.Pattern; public class SpannableStringUtils { private static final String TAG = SpannableStringUtils.class.getSimpleName(); private static final Pattern PATTERN_WEB = Pattern.compile("http://[a-zA-Z0-9+&@#/%?=~_\\-|!:,\\.;]*[a-zA-Z0-9+&@#/%=~_|]"); private static final Pattern PATTERN_TOPIC = Pattern.compile("#[\\p{Print}\\p{InCJKUnifiedIdeographs}&&[^#]]+#"); private static final Pattern PATTERN_MENTION = Pattern.compile("@[\\w\\p{InCJKUnifiedIdeographs}-]{1,26}"); private static final Pattern PATTERN_EMOTICON = Pattern.compile("\\[(\\S+?)\\]"); private static final Pattern PATTERN_STYLE = Pattern.compile("(?!^\\\\$)((_+)|(\\*+)|(~+))(\\w{1,})(?!^\\\\$)\\1"); private static final String HTTP_SCHEME = "http://"; private static final String TOPIC_SCHEME = "us.shandian.blacklight.topic://"; private static final String MENTION_SCHEME = "us.shandian.blacklight.user://"; public static SpannableString span(Context context, String text) { text = text.replace("\\n", "\n").replace("<br>", "\n"); SpannableStringBuilder ssb = new SpannableStringBuilder(text); Linkify.addLinks(ssb, PATTERN_WEB, HTTP_SCHEME); Linkify.addLinks(ssb, PATTERN_TOPIC, TOPIC_SCHEME); Linkify.addLinks(ssb, PATTERN_MENTION, MENTION_SCHEME); return null; } }