Java tutorial
package im.delight.java.emoji; /** * Copyright 2014 www.delight.im <info@delight.im> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.apache.commons.lang3.StringUtils; import java.util.Map; import java.util.regex.Pattern; import java.util.HashMap; /** * Lets you replace all emoticons in a text with their corresponding Unicode Emoji * <p> * Usage: String myEmojiString = Emoji.replaceInText(myString); */ public class Emoji { /** Characters that may not occur immediately before or after an emoticon */ private static final String REGEX_SURROUNDING_CHARS_DISALLOWED = "[-_a-zA-Z0-9)(;:*<>=/]"; /** A negative look-behind ensuring that the match is not preceded by one of the characters above */ private static final String REGEX_NEGATIVE_LOOKBEHIND = "(?<!" + REGEX_SURROUNDING_CHARS_DISALLOWED + ")"; /** A negative look-ahead ensuring that the match is not followed by one of the characters above */ private static final String REGEX_NEGATIVE_LOOKAHEAD = "(?!" + REGEX_SURROUNDING_CHARS_DISALLOWED + ")"; private static class ReplacementsMap extends HashMap<String, Integer> { private static final long serialVersionUID = 4948071414363715959L; private static ReplacementsMap mInstance; private ReplacementsMap() { super(); // put(":-)", 0x1F60A); // put(":)", 0x1F60A); // put(":-(", 0x1F61E); // put(":(", 0x1F61E); // put(":-D", 0x1F603); // put(":D", 0x1F603); // put(";-)", 0x1F609); // put(";)", 0x1F609); // put(":-P", 0x1F61C); // put(":P", 0x1F61C); // put(":-p", 0x1F61C); // put(":p", 0x1F61C); // put(":-*", 0x1F618); // put(":*", 0x1F618); // put("<3", 0x2764); // put(":3", 0x2764); // put(">:[", 0x1F621); // put(":'|", 0x1F625); // put(":-[", 0x1F629); // put(":'(", 0x1F62D); // put("=O", 0x1F631); // put("xD", 0x1F601); // put(":')", 0x1F602); // put(":-/", 0x1F612); // put(":/", 0x1F612); // put(":-|", 0x1F614); // put(":|", 0x1F614); // put("*_*", 0x1F60D); put("[]", 0x1F629); put("[]", 0x1F632); put("[?]", 0x1F61E); put("[]", 0x1F635); put("[]", 0x1F630); put("[?]", 0x1F612); put("[]", 0x1F60D); put("[]", 0x1F624); put("[]", 0x1F61C); put("[]", 0x1F61D); put("[]", 0x1F60B); put("[?]", 0x1F618); put("[?]", 0x1F61A); put("[?]", 0x1F637); put("[]", 0x1F633); put("[]", 0x1F603); put("[]", 0x1F605); put("[]", 0x1F606); put("[?]", 0x1F601); put("[]", 0x1F602); put("[]", 0x1F60A); put("[]", 0x1263A); put("[]", 0x1F604); put("[?]", 0x1F622); put("[]", 0x1F62D); put("[]", 0x1F628); put("[?]", 0x1F623); put("[]", 0x1F621); put("[?]", 0x1F60C); put("[]", 0x1F616); put("[?]", 0x1F614); put("[??]", 0x1F631); put("[]", 0x1F62A); put("[]", 0x1F60F); put("[]", 0x1F613); put("[]", 0x1F625); put("[]", 0x1F62B); put("[]", 0x1F609); put("[]", 0x2600); put("[]", 0x2601); put("[]", 0x2614); put("[]", 0x26C4); put("[]", 0x26A1); put("[]", 0x1F300); put("[]", 0x1F301); put("[]", 0x1F302); put("[?]", 0x1F303); put("[?]", 0x1F304); put("[]", 0x1F305); put("[?]", 0x1F306); put("[]", 0x1F307); put("[]", 0x1F308); put("[]", 0x2744); put("[]", 0x26C5); put("[]", 0x1F309); put("[]", 0x1F30A); put("[?]", 0x1F30B); put("[]", 0x1F30C); put("[?]", 0x1F30F); put("[?]", 0x1F311); put("[]", 0x1F314); put("[?]", 0x1F313); put("[]", 0x1F319); put("[]", 0x1F315); put("[]", 0x1F31B); put("[]", 0x1F31F); put("[?]", 0x1F320); put("[]", 0x1F550); put("[]", 0x1F551); put("[]", 0x1F552); put("[]", 0x1F553); put("[]", 0x1F554); put("[]", 0x1F555); put("[]", 0x1F556); put("[]", 0x1F557); put("[?]", 0x1F558); put("[??]", 0x1F559); put("[??]", 0x1F55A); put("[??]", 0x1F55B); put("[]", 0x231A); put("[?]", 0x231B); put("[]", 0x23F0); put("[?]", 0x23F3); put("[]", 0xE646); put("[]", 0x2649); put("[??]", 0x264A); put("[]", 0x264B); put("[?]", 0x264C); put("[]", 0x264D); put("[]", 0x264E); put("[?]", 0x264F); put("[]", 0x2650); put("[]", 0x2651); put("[]", 0x2652); put("[?]", 0x2653); put("[]", 0x26CE); put("[??]", 0xE741); put("[?]", 0x1F337); put("[]", 0x1F331); put("[?]", 0x1F341); put("[]", 0x1F338); put("[]", 0x1F339); put("[??]", 0x1F342); put("[?]", 0x1F343); put("[]", 0x1F33A); put("[?]", 0x1F33B); put("[?]", 0x1F334); put("[]", 0x1F335); put("[]", 0x1F33E); put("[]", 0x1F33D); put("[?]", 0x1F344); put("[?]", 0x1F330); put("[?]", 0x1F33C); put("[?]", 0x1F33F); put("[]", 0x1F352); put("[]", 0x1F34C); put("[?]", 0x1F34E); put("[?]", 0x1F34A); put("[]", 0x1F353); put("[]", 0x1F349); put("[?]", 0x1F345); put("[]", 0x1F346); put("[?]", 0x1F348); put("[???]", 0x1F34D); put("[?]", 0x1F347); put("[?]", 0x1F351); put("[?]", 0x1F34F); put("[]", 0xE693); put("[]", 0x270B); put("[]", 0x270C); put("[]", 0x1F44A); put("[]", 0x1F44D); put("[no]", 0x261D); put("[]", 0x1F446); put("[]", 0x1F447); put("[]", 0x1F448); put("[?]", 0x1F449); put("[]", 0x1F44B); put("[]", 0x1F44F); put("[ok]", 0x1F44C); put("[]", 0x1F44E); put("[]", 0x1F450); put("[?]", 0x1F440); put("[]", 0x1F442); put("[?]", 0x1F443); put("[]", 0x1F444); put("[]", 0x1F445); put("[?]", 0x1F484); put("[]", 0x1F485); put("[]", 0x1F486); put("[??]", 0x1F487); put("[??]", 0x1F488); put("[?]", 0x1F464); put("[]", 0x1F466); put("[]", 0x1F467); put("[]", 0x1F468); put("[]", 0x1F469); put("[]", 0x1F46A); put("[]", 0x1F46B); put("[]", 0x1F46E); put("[]", 0x1F46F); put("[]", 0x1F470); put("[?]", 0x1F471); put("[]", 0x1F472); put("[]", 0x1F473); put("[?]", 0x1F474); put("[?]", 0x1F475); put("[baby]", 0x1F476); put("[]", 0x1F477); put("[]", 0x1F478); put("[]", 0x1F479); put("[]", 0x1F47A); put("[?]", 0x1F47B); put("[]", 0x1F47C); put("[]", 0x1F47D); put("[]", 0x1F47E); put("[?]", 0x1F47F); put("[]", 0x1F480); put("[?]", 0x1F481); put("[]", 0x1F482); put("[]", 0x1F483); put("[]", 0x1F40C); put("[]", 0x1F40D); put("[]", 0x1F40E); put("[]", 0x1F414); put("[]", 0x1F417); put("[]", 0x1F42B); put("[]", 0x1F418); put("[]", 0x1F428); put("[]", 0x1F412); put("[]", 0x1F411); put("[]", 0x1F419); put("[]", 0x1F41A); put("[]", 0x1F41B); put("[?]", 0x1F41C); put("[]", 0x1F41D); put("[]", 0x1F41E); put("[]", 0x1F420); put("[]", 0x1F421); put("[]", 0x1F422); put("[?]", 0x1F424); put("[?]", 0x1F425); put("[?]", 0x1F426); put("[?]", 0x1F423); put("[?]", 0x1F427); put("[]", 0x1F429); put("[]", 0x1F41F); put("[]", 0x1F42C); put("[?]", 0x1F42D); put("[?]", 0x1F42F); put("[]", 0x1F431); put("[]", 0x1F433); put("[]", 0x1F434); put("[?]", 0x1F435); put("[]", 0x1F436); put("[]", 0x1F437); put("[]", 0x1F43B); put("[]", 0x1F439); put("[?]", 0x1F43A); put("[?]", 0x1F42E); put("[?]", 0x1F430); put("[?]", 0x1F438); put("[??]", 0x1F43E); put("[]", 0x1F432); put("[]", 0x1F43C); put("[?]", 0x1F43D); put("[]", 0x1F63A); put("[]", 0x1F638); put("[]", 0x1F639); put("[]", 0x1F63D); put("[]", 0x1F63B); put("[]", 0x1F63F); put("[]", 0x1F63E); put("[]", 0x1F63C); put("[]", 0x1F640); put("[??]", 0x1F645); put("[ok]", 0x1F646); put("[]", 0x1F647); put("[??]", 0x1F648); put("[??]", 0x1F64A); put("[??]", 0x1F649); put("[]", 0x1F64B); put("[?]", 0x1F64C); put("[]", 0x1F64D); put("[]", 0x1F64E); put("[?]", 0x1F64F); put("[?]", 0x1F3E0); put("[]", 0x1F3E1); put("[]", 0x1F3E2); put("[?]", 0x1F3E3); put("[]", 0x1F3E5); put("[]", 0x1F3E6); put("[ATM]", 0x1F3E7); put("[]", 0x1F3E8); put("[]", 0x1F3E9); put("[24?]", 0x1F3EA); put("[]", 0x1F3EB); put("[]", 0x26EA); put("[]", 0x26F2); put("[]", 0x1F3EC); put("[?]", 0x1F3EF); put("[?]", 0x1F3F0); put("[]", 0x1F3ED); put("[]", 0x2693); put("[?]", 0x1F3EE); put("[]", 0x1F5FB); put("[]", 0x1F5FC); put("[?]", 0x1F5FD); put("[]", 0x1F5FE); put("[]", 0x1F5FF); put("[]", 0x1F45E); put("[?]", 0x1F45F); put("[]", 0x1F460); put("[]", 0x1F461); put("[?]", 0x1F462); put("[?]", 0x1F463); put("[]", 0x1F453); put("[?]", 0x1F455); put("[]", 0x1F456); put("[]", 0x1F451); put("[]", 0x1F454); put("[??]", 0x1F452); put("[?]", 0x1F457); put("[?]", 0x1F458); put("[?]", 0x1F459); put("[]", 0x1F45A); put("[]", 0x1F45B); put("[]", 0x1F45C); put("[]", 0x1F45D); put("[]", 0x1F4B0); put("[??]", 0x1F4B1); put("[]", 0x1F4B9); put("[]", 0x1F4B2); put("[?]", 0x1F4B3); put("[RMB]", 0x1F4B4); put("[]", 0x1F4B5); put("[]", 0x1F4B8); put("[?]", 0x1F525); put("[]", 0x1F526); put("[]", 0x1F527); put("[?]", 0x1F528); put("[?]", 0x1F529); put("[]", 0x1F52A); put("[]", 0x1F52B); put("[?]", 0x1F52E); put("[]", 0x1F52F); put("[?]", 0x1F530); put("[?]", 0x1F531); put("[]", 0x1F489); put("[?]", 0x1F48A); put("[A]", 0x1F170); put("[B]", 0x1F171); put("[AB]", 0x1F18E); put("[O]", 0x1F17E); put("[?]", 0x1F380); put("[]", 0x1F381); put("[]", 0x1F382); put("[]", 0x1F384); put("[?]", 0x1F385); put("[??]", 0x1F38C); put("[?]", 0x1F386); put("[?]", 0x1F388); put("[]", 0x1F389); put("[]", 0x1F38D); put("[]", 0x1F38E); put("[]", 0x1F393); put("[]", 0x1F392); put("[?]", 0x1F38F); put("[]", 0x1F387); put("[]", 0x1F390); put("[??]", 0x1F383); put("[?]", 0x1F38A); put("[]", 0x1F38B); put("[?]", 0x1F391); put("[]", 0x1F4DF); put("[?]", 0x260E); put("[?]", 0x1F4DE); put("[]", 0x1F4F1); put("[?]", 0x1F4F2); put("[]", 0x1F4DD); put("[]", 0x1F4E0); put("[]", 0x2709); put("[?]", 0x1F4E8); put("[?]", 0x1F4E9); put("[]", 0x1F4EA); put("[]", 0x1F4EB); put("[]", 0x1F4EE); put("[]", 0x1F4F0); put("[]", 0x1F4E2); put("[?]", 0x1F4E3); put("[]", 0x1F4E1); put("[]", 0x1F4E4); put("[]", 0x1F4E5); put("[]", 0x1F4E6); put("[]", 0x1F4E7); put("[ABCD]", 0x1F520); put("[abcd]", 0x1F521); put("[1234]", 0x1F522); put("[?]", 0x1F523); put("[abc]", 0x1F524); put("[]", 0x2712); put("[?]", 0x1F4BA); put("[]", 0x1F4BB); put("[]", 0x270F); put("[]", 0x1F4CE); put("[]", 0x1F4BC); put("[]", 0x1F4BD); put("[]", 0x1F4BE); put("[]", 0x1F4BF); put("[DVD]", 0x1F4C0); put("[?]", 0x2702); put("[]", 0x1F4CD); put("[??]", 0x1F4C3); put("[]", 0x1F4C4); put("[]", 0x1F4C5); put("[]", 0x1F4C1); put("[]", 0x1F4C2); put("[]", 0x1F4D3); put("[]", 0x1F4D6); put("[]", 0x1F4D4); put("[]", 0x1F4D5); put("[]", 0x1F4D7); put("[?]", 0x1F4D8); put("[]", 0x1F4D9); put("[]", 0x1F4DA); put("[???]", 0x1F4DB); put("[?]", 0x1F4DC); put("[?]", 0x1F4CB); put("[]", 0x1F4C6); put("[]", 0x1F4CA); put("[?]", 0x1F4C8); put("[?]", 0x1F4C9); put("[]", 0x1F4C7); put("[]", 0x1F4CC); put("[]", 0x1F4D2); put("[]", 0x1F4CF); put("[?]", 0x1F4D0); put("[]", 0x1F4D1); put("[]", 0x1F3BD); put("[?]", 0x26BE); put("[?]", 0x26F3); put("[?]", 0x1F3BE); put("[?]", 0x26BD); put("[?]", 0x1F3BF); put("[?]", 0x1F3C0); put("[]", 0x1F3C1); put("[]", 0x1F3C2); put("[]", 0x1F3C3); put("[]", 0x1F3C4); put("[?]", 0x1F3C6); put("[?]", 0x1F3C8); put("[]", 0x1F3CA); put("[]", 0x1F683); put("[?]", 0x1F687); put("[M]", 0x24C2); put("[]", 0x1F684); put("[?]", 0x1F685); put("[]", 0x1F697); put("[]", 0x1F699); put("[]", 0x1F68C); put("[]", 0x1F68F); put("[]", 0x1F6A2); put("[]", 0x2708); put("[]", 0x26F5); put("[?]", 0x1F689); put("[?]", 0x1F680); put("[]", 0x1F6A4); put("[]", 0x1F695); put("[]", 0x1F69A); put("[]", 0x1F692); put("[]", 0x1F691); put("[]", 0x1F693); put("[]", 0x26FD); put("[?]", 0x1F17F); put("[?]", 0x1F6A5); put("[]", 0x1F6A7); put("[]", 0x1F6A8); put("[]", 0x2668); put("[?]", 0x26FA); put("[]", 0x1F3A0); put("[]", 0x1F3A1); put("[]", 0x1F3A2); put("[]", 0x1F3A3); put("[]", 0x1F3A4); put("[?]", 0x1F3A5); put("[?]", 0x1F3A6); put("[?]", 0x1F3A7); put("[?]", 0x1F3A8); put("[]", 0x1F3A9); put("[?]", 0x1F3AA); put("[]", 0x1F3AB); put("[?]", 0x1F3AC); put("[?]", 0x1F3AD); put("[?]", 0x1F3AE); put("[]", 0x1F004); put("[?]", 0x1F3AF); put("[]", 0x1F3B0); put("[??]", 0x1F3B1); put("[?]", 0x1F3B2); put("[]", 0x1F3B3); put("[]", 0x1F3B4); put("[]", 0x1F0CF); put("[?]", 0x1F3B5); put("[]", 0x1F3B6); put("[?]", 0x1F3B7); put("[?]", 0x1F3B8); put("[?]", 0x1F3B9); put("[??]", 0x1F3BA); put("[????]", 0x1F3BB); put("[]", 0x1F3BC); put("[?]", 0x303D); put("[]", 0x1F4F7); put("[?]", 0x1F4F9); put("[]", 0x1F4FA); put("[]", 0x1F4FB); put("[]", 0x1F4FC); put("[?]", 0x1F48B); put("[]", 0x1F48C); put("[]", 0x1F48D); put("[]", 0x1F48E); put("[?]", 0x1F48F); put("[?]", 0x1F490); put("[]", 0x1F491); put("[]", 0x1F492); put("[18?]", 0x1F51E); put("[]", 0x1F354); put("[?]", 0x1F359); put("[]", 0x1F370); put("[??]", 0x1F35C); put("[?]", 0x1F35E); put("[]", 0x1F373); put("[]", 0x1F366); put("[?]", 0x1F35F); put("[]", 0x1F361); put("[]", 0x1F358); put("[]", 0x1F35A); put("[?]", 0x1F35D); put("[]", 0x1F35B); put("[]", 0x1F362); put("[?]", 0x1F363); put("[]", 0x1F371); put("[]", 0x1F372); put("[]", 0x1F367); put("[~]", 0x1F356); put("[]", 0x1F365); put("[]", 0x1F360); put("[?]", 0x1F355); put("[]", 0x1F357); put("[]", 0x1F368); put("[]", 0x1F369); put("[]", 0x1F36A); put("[]", 0x1F36B); put("[]", 0x1F36C); put("[]", 0x1F36D); put("[]", 0x1F36E); put("[]", 0x1F36F); put("[]", 0x1F364); put("[?]", 0x1F374); put("[]", 0x2615); put("[?]", 0x1F378); put("[]", 0x1F37A); put("[]", 0x1F375); put("[]", 0x1F376); put("[?]", 0x1F377); put("[?]", 0x1F37B); put("[]", 0x1F379); put("[?]", 0x2197); put("[??]", 0x2198); put("[?]", 0x2196); put("[??]", 0x2199); put("[??]", 0x2934); put("[??]", 0x2935); put("[??]", 0x2194); put("[?]", 0x2195); put("[?]", 0x2B06); put("[?]", 0x2B07); put("[??]", 0x27A1); put("[?]", 0x2B05); put("[?]", 0x25B6); put("[]", 0x25C0); put("[]", 0x23E9); put("[]", 0x23EA); put("[?]", 0x23EB); put("[?]", 0x23EC); put("[]", 0x1F53A); put("[]", 0x1F53B); put("[]", 0x1F53C); put("[]", 0x1F53D); put("[]", 0x2B55); put("[?]", 0x274C); put("[]", 0x274E); put("[??]", 0x2757); put("[?]", 0x2049); put("[?]", 0x203C); put("[?]", 0x2753); put("[?]", 0x2754); put("[??]", 0x2755); put("[?]", 0x3030); put("[??]", 0x27B0); put("[?]", 0x27BF); put("[]", 0x2764); put("[]", 0x1F493); put("[]", 0x1F494); put("[]", 0x1F495); put("[]", 0x1F496); put("[]", 0x1F497); put("[]", 0x1F498); put("[?]", 0x1F499); put("[]", 0x1F49A); put("[]", 0x1F49B); put("[]", 0x1F49C); put("[]", 0x1F49D); put("[]", 0x1F49E); put("[]", 0x1F49F); put("[]", 0x2665); put("[]", 0x2660); put("[]", 0x2666); put("[]", 0x2663); put("[?]", 0x1F6AC); put("[??]", 0x1F6AD); put("[?]", 0x267F); put("[]", 0x1F6A9); put("[?]", 0x26A0); put("[?]", 0x26D4); put("[?]", 0x267B); put("[]", 0x1F6B2); put("[]", 0x1F6B6); put("[]", 0x1F6B9); put("[]", 0x1F6BA); put("[]", 0x1F6C0); put("[?]", 0x1F6BB); put("[]", 0x1F6BD); put("[WC]", 0x1F6BE); put("[baby]", 0x1F6BC); put("[]", 0x1F6AA); put("[?]", 0x1F6AB); put("[?]", 0x2714); put("[]", 0x1F191); put("[]", 0x1F192); put("[?]", 0x1F193); put("[ID]", 0x1F194); put("[]", 0x1F195); put("[NG]", 0x1F196); put("[OK]", 0x1F197); put("[SOS]", 0x1F198); put("[UP]", 0x1F199); put("[VS]", 0x1F19A); put("[???]", 0x1F201); put("[???]", 0x1F202); put("[?]", 0x1F232); put("[]", 0x1F233); put("[?]", 0x1F234); put("[]", 0x1F235); put("[]", 0x1F236); put("[]", 0x1F21A); put("[]", 0x1F237); put("[]", 0x1F238); put("[]", 0x1F239); put("[]", 0x1F22F); put("[]", 0x1F23A); put("[]", 0x3299); put("[?]", 0x3297); put("[]", 0x1F250); put("[?]", 0x1F251); put("[?]", 0x2795); put("[??]", 0x2796); put("[?]", 0x2716); put("[?]", 0x2797); put("[]", 0x1F4A0); put("[?]", 0x1F4A1); put("[]", 0x1F4A2); put("[]", 0x1F4A3); put("[]", 0x1F4A4); put("[]", 0x1F4A5); put("[?]", 0x1F4A6); put("[]", 0x1F4A7); put("[]", 0x1F4A8); put("[?]", 0x1F4A9); put("[]", 0x1F4AA); put("[]", 0x1F4AB); put("[?]", 0x1F4AC); put("[?]", 0x2728); put("[]", 0x2734); put("[?]", 0x2733); put("[?]", 0x26AA); put("[]", 0x26AB); put("[]", 0x1F534); put("[?]", 0x1F535); put("[?]", 0x1F532); put("[?]", 0x1F533); put("[]", 0x2B50); put("[?]", 0x2B1C); put("[?]", 0x2B1B); put("[?]", 0x1F536); put("[??]", 0x1F537); put("[??]", 0x1F538); put("[??]", 0x1F539); put("[]", 0x2747); put("[]", 0x1F4AE); put("[100]", 0x1F4AF); put("[]", 0x21A9); put("[]", 0x21AA); put("[]", 0x1F503); put("[?]", 0x1F50A); put("[]", 0x1F50B); put("[?]", 0x1F50C); put("[]", 0x1F50D); put("[]", 0x1F50E); put("[?]", 0x1F512); put("[?]", 0x1F513); put("[?]", 0x1F50F); put("[?]", 0x1F510); put("[]", 0x1F511); put("[]", 0x1F514); put("[?]", 0x2611); put("[]", 0x1F518); put("[]", 0x1F516); put("[]", 0x1F517); put("[?]", 0x1F519); put("[?]", 0x1F51A); put("[???]", 0x1F51B); put("[?]", 0x1F51C); put("[Top]", 0x1F51D); put("[?]", 0x2705); } public static ReplacementsMap getInstance() { if (mInstance == null) { mInstance = new ReplacementsMap(); } return mInstance; } } private static String getUnicodeChar(int codepoint) { return new String(Character.toChars(codepoint)); } /** Constructs a regular expression which ensures that the emoticon is not part of a longer string of special chars (e.g. <:)))> or <http://> which both include basic emoticons) */ private static String getEmoticonSearchRegex(String emoticon) { return REGEX_NEGATIVE_LOOKBEHIND + "(" + Pattern.quote(emoticon) + ")" + REGEX_NEGATIVE_LOOKAHEAD; } /** * Replaces all emoticons in the given text with their corresponding Unicode Emoji * * @param text the String to search and replace in * @return the new String containing the Unicode Emoji */ public static String replaceInText(String text) { return replaceInText(text, false); } /** * Converts between emoticons and their corresponding Unicode Emoji in the given text * * @param text the String to search and replace in * @param reverse whether to replace emoticons with emoji as usual (false) or revert emoji to emoticons (true) * @return the new String containing the the converted entities */ public static String replaceInText(String text, boolean reverse) { final ReplacementsMap replacements = ReplacementsMap.getInstance(); String emoticon; Integer codepoint; for (Map.Entry<String, Integer> entry : replacements.entrySet()) { if (entry != null) { emoticon = entry.getKey(); codepoint = entry.getValue(); if (emoticon != null && codepoint != null) { String unicodeChar = getUnicodeChar(codepoint.intValue()); if (reverse) { text = text.replace(unicodeChar, emoticon); } else { text = text.replaceAll(getEmoticonSearchRegex(emoticon), unicodeChar); } } } } // //text = filter(text); return text; } private static String regex = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u25b6-\u25c0]|[\u25e9-\u25ec]|[\u23e9-\u23ec]|[\u2b05-\u2b07]|[\u27a1]|[\u2194-\u2199]|[\u2934-\u2935]|[\u21a9-\u21aa]|[\u200d]|[\u2764\ufe0f]|[\u261d]|[\u270a-\u270c]|[\u2600-\u2615]|[\u2648-\u264f]|[\u2764\ufe0f]|[\u261d]|[\u270a-\u270c]|[\u2600-\u2615]|[\u26a0-\u26a1]|[\u26aa-\u26ab]|[\u26c4-\u26c5]|[\u26ce]|[\u25fb-\u25fe]|[\u2753-\u2757]|[\u2744-\u274f]|[\u2b50]|[\u26f2-\u26fa]|[\u26bd-\u26be]|[\u2708-\u270f]|[\u2728]|[\u26bd-\u26be]|[\u26fd]|[\u3297-\u3299]|[\u2650-\u2653]" + "|[\u2693]|[\u26ea]|[\u231a]|[\u23f0]|[\u23f3]|[\u231b]|[\u2702]|[\u2712]|[\u26d4]|[\u2733]|[\u2705]|[\u2734]" + "|[\u2668]|[\u267b]|[\u2660]|[\u2663]|[\u2665]|[\u2666]|[\u25aa]|[\u25ab]|[\u2b1b]|[\u2b1c]|[\u267f]|[\u2b55]|[\u24c2]|[\u2139]|[\u2795]|[\u2796]|[\u3030]|[\u2797]|[\u2716]|[\u2714]|[\u2122]|[\u27b0]|[\u27bf]|[\u303d]" + "|[\u20e3]|[\u263a]"; private static Pattern pattern = Pattern.compile(regex, Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE); private static String filter(String inputString) { return pattern.matcher(inputString).replaceAll("[]"); } }