環境 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タグを挿入するなどして、
より本家に近い実装をする方法を考えると良いと思う。