| using System.Collections; | 
| using System.Collections.Generic; | 
| using System.Text; | 
| using UnityEngine; | 
|   | 
| public abstract class TRichAnalysis<T> where T:class,new() | 
| { | 
|     private static T _inst = null; | 
|   | 
|     public static T Inst { | 
|         get { | 
|             if (_inst == null) { | 
|                 _inst = new T(); | 
|             } | 
|             return _inst; | 
|         } | 
|     } | 
|   | 
|     protected static StringBuilder m_StringBuilder = new StringBuilder(); | 
|   | 
|     protected static Dictionary<string, string> displayDic = new Dictionary<string, string>(); | 
|   | 
|     public abstract string Analysis(string val,bool IsRich); | 
|   | 
|     public abstract string CalculateTextIndex(string val,int index); | 
|   | 
|     protected static readonly char SPLITEVENT = '|'; | 
|     protected static readonly char SPLITDATA = ' '; | 
|     protected static readonly char SPLITVALUE = '='; | 
|   | 
|     private static string[] poolStrs=new string[1]; | 
|   | 
|     protected string[] GetSplitEvent(string val) | 
|     { | 
|         return val.Split(SPLITEVENT); | 
|     } | 
|   | 
|     protected string[] GetSplitData(string val) | 
|     { | 
|         return val.Split(SPLITDATA); | 
|     } | 
|   | 
|     protected string[] GetSplitValue(string val) | 
|     { | 
|         var newVal = val.Replace("=", ""); | 
|         var count = val.Length - newVal.Length; | 
|         if (count == 1 && WordAnalysis.Color_Start_Regex.IsMatch(val)) | 
|         { | 
|             poolStrs[0] = val; | 
|             return poolStrs; | 
|         } | 
|         return val.Split(new char[] { SPLITVALUE }, 2); | 
|     } | 
| } |