2014-10-26 1 views
0

Я стараюсь, чтобы Linkify hashtags в TextView.
Thats работает как пример кода, который я предоставил, но мне нужно подчеркнуть найденные хэштеги на основе match.group(1).
Ссылка, похоже, подчеркивает, основываясь на match.group(0). С TransformFilter Я могу изменить только хешт-клик, а не предварительный просмотр ссылки подчеркивания.
В итоге, Linkify создает подчеркивание на match.group(0), но я хочу, подчеркивает на match.group(1)Связать хэштеги на основе match.group (1)

TextView tv_body = (TextView) view.findViewById(R.id.tv_body); 
final Pattern pattern = Pattern.compile(
    "(?:^|\\W)#([A-Za-z\\d\u00E7\u011F\u0131\u015F\u00F6\u00FC\u00C7\u011E\u0130\u015E\u00D6\u00DC]+)"); 
String scheme = "search://"; 

TransformFilter filter = new TransformFilter() 
{ 
    public final String transformUrl(final Matcher match, String url) 
    { 
     Log.d(Constants.TAG, "transformUrl - match.group(0):" + 
      match.group(0) + " - match.group(1):" + match.group(1)); 
     return match.group(1); 
    } 
}; 
Linkify.addLinks(tv_body, pattern, scheme, null, filter); 

transformUrl - match.group (0): ## яр - match.group (1): дене
transformUrl - match.group (0): # hashreal - match.group (1): hashreal transformUrl - match.group (0): + # arti - match.group (1): arti
transformUrl - match.group (0): (# de - match.group (1): de
transformUrl - match.group (0): # feriştah - match.group (1): Feriştah

/* 
tv_body text content: 
nb#dnkjd 
##dene 
#hashreal 
1#2 
+#arti 
%d(#de 
#feriştah 
şah#in 
*/ 
+0

Если реализации Linkify недостаточно, вы все равно можете использовать Spannable.setSpan с объектом spanSpace/ClickableSpan. – pskink

ответ

1

Если вы хотите, чтобы исключить текст, совпадающий по (?:^|\\W)#, заключите его в просмотровых за:

(?<=(?:^|\\W)#) 

Тогда вы можете оставить группу захвата, а главный матч будет содержать только контент после #.


Перед тем, я предлагаю следующее:

(?<=\B#) 

Однако, посмотрев на this bug report и this question about inconsistency between \w and \b in Java, я бы сказал, что вы должны быть осторожны при использовании укорочением, так как \b и \B В режиме по умолчанию не синхронизируется с \w.

+0

Большое вам спасибо. Прекрасно работает. –

Смежные вопросы