Edited at

正規表現を使ったTwitterに似たハッシュタグ機能の実装

More than 1 year has passed since last update.

環境 Java


行いたかったこと

Twitterのようにツイート内容に「#」があった場合、

ハッシュタグとして認識をして、

ハッシュタグごとのタイムラインを表示できるようにする。


実装の考え


  • 正規表現で、ハッシュタグにあたる文字列をリストに挿入をする。

  • 文字列からハッシュタグを削除する

  • タイムラインを表示するときに、ハッシュタグを文字列の後ろにいれ表示をする。


ソースコード

String text = "文字列";

String regex = "#(w*[一-龠_ぁ-ん_ァ-ヴーa-zA-Za-zA-Z0-9]+|[a-zA-Z0-9_]+|[a-zA-Z0-9_]w*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
List<String> hashtagList = new ArrayList<String>();
while (matcher.find()) {
hashtagList(matcher.group());
}

String text = "文字列";

String regex = "#(w*[一-龠_ぁ-ん_ァ-ヴーa-zA-Za-zA-Z0-9]+|[a-zA-Z0-9_]+|[a-zA-Z0-9_]w*)";
String replacedText = text.replaceAll(regex, "");

return replacedText;


問題点

のちにハッシュタグを挿入すると、

文章中のハッシュタグの位置が文章の最後に変わってしまう。

本文中の文字列でマッチした場合、htmlタグを挿入するなどして、

より本家に近い実装をする方法を考えると良いと思う。