Twitterメッセージに含まれる "wwww" のクリーニング
Twitter のメッセージ中には笑いを表現する "wwww" が含まれるケースがある.最悪の場合,140文字の大部分を "wwww" が占める場合もある.
(その結果,形態素に分割できないため,KH Coder の127文字制限に引っかかる)
というわけで,"www..." や "www..." などを文字列中から消去するプログラム.
import java.io.*; import java.util.regex.Pattern; import java.util.regex.Matcher; public class test { public static void main(String[] args){ //String str = "123www123WWW123"; String originalString = "123wwww123www123"; String str = zen2han(originalString); String reducedString = avoidLaugh(str); System.out.println(reducedString); } // テキスト中に含まれる www... や WWW... を消す. private static String avoidLaugh(String s){ String regex = "[^w|^W]w+|W+[^w|^W]"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); if (m.find()){ System.err.println("Matched"); // www および WWW を "" へ置換 String regexReplace = "w+|W+"; s = s.replaceAll(regexReplace, ""); System.err.println(s); } else { System.err.println("Not matched"); } return s; } //全角アルファベットを半角アルファベットへ変換する private static String zen2han(String s){ StringBuffer sb = new StringBuffer(s); for (int i = 0; i < sb.length(); i++) { char c = sb.charAt(i); if (c >= 'a' && c <= 'z') { sb.setCharAt(i, (char) (c - 'a' + 'a')); } else if (c >= 'A' && c <= 'Z') { sb.setCharAt(i, (char) (c - 'A' + 'A')); } } return sb.toString(); } }