1
我需要突出顯示Android應用程序中搜索到的hashtag的結果。假設我的搜索字詞是「#fun」。基於正則表達式的鏈接不能按預期工作
樣品字符串: 「#fun #funny#fun123 #funtimes#樂趣#喜」
所需的輸出: 「#fun #funny#fun123 #funtimes #fun #hi」
我試過以下 -
Pattern.compile(searchTerm + "\\b");
其中searchTerm是「#fun」。
結果: 「#fun#fun紐約#fun123 #fun次#fun #hi」
應該不是單詞邊界停止子亮點,如「#funny串「?
這是我如何應用正則表達式:
private void addLinkToSpan(Spannable s, Link link) {
Pattern pattern = Pattern.compile(searchTerm + "\\b");
Matcher matcher = pattern.matcher(mText);
while (matcher.find()) {
int start = matcher.start();
if (start >= 0) {
int end = start + link.getText().length();
applyLink(link, new ClickableLinkSpan.Range(start, end), s);
}
}
}
private void applyLink(final Link link, final ClickableLinkSpan.Range range, Spannable text) {
ClickableLinkSpan linkSpan = new ClickableLinkSpan(link, range);
text.setSpan(linkSpan, range.start, range.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
StyleSpan styleSpan = new StyleSpan(link.getTextStyle().ordinal());
text.setSpan(styleSpan, range.start, range.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
請向我們顯示您的完整代碼。 – TheLostMind
'\ b'正常工作。 https://regex101.com/r/3jYEoy/1 – vks
改爲使用它,看它是否有效: Pattern.compile(searchTerm +「[^ \\ d \\ w]」); – Alikbar