public static void UpdateEmojiReplacements(string inputString, EmojiConfig config, System.Action <string, int> onEmojiChar)
        {
            if (!string.IsNullOrEmpty(inputString))
            {
                inputString = EmojiParser.ParseEmoji(inputString);

                int i = 0;
                while (i < inputString.Length)
                {
                    string singleChar = inputString.Substring(i, 1);

                    if (singleChar.Equals("["))
                    {
                        int endIndex = inputString.IndexOf("]", i);
                        if (endIndex > i)
                        {
                            string emojiCode = inputString.Substring(i, endIndex - i + 1);
                            int    emojiIndex;
                            if (config.map.TryGetValue(emojiCode.Substring(1, emojiCode.Length - 2), out emojiIndex))
                            {
                                onEmojiChar(emojiCode, emojiIndex);
                                i += emojiCode.Length;
                            }
                            else
                            {
                                onEmojiChar(singleChar, -1);
                                i++;
                            }
                        }
                        else
                        {
                            onEmojiChar(singleChar, -1);
                            i++;
                        }
                    }
                    else
                    {
                        onEmojiChar(singleChar, -1);
                        i++;
                    }
                }
            }
        }