Esempio n. 1
0
        /// <summary>
        /// Separate string into Pair array.
        /// </summary>
        /// <example>
        /// Input : [00:17:97]帰[00:18:37]り[00:18:55]道[00:18:94]は[00:19:22]
        /// Output : [new Pair(17970,"帰"),new Pair(18370,"り"),new Pair(18550,"道"),new Pair(18940,"は"),new Pair(19220,"")]
        /// </example>
        /// <param name="line"></param>
        /// <returns></returns>
        public static Pair[] SeparateKaraokeLine(string line)
        {
            var offset = 0;
            var tt     = "";
            var h      = HeadTimeTagRegex.Match(line);

            if (h.Success)
            {
                tt     = h.Value;
                offset = h.Length;
            }
            var ret = new List <Pair>();
            var mc  = TimeTagRegex.Matches(line, offset);

            if (mc.Count == 0)
            {
                ret.Add(ConvertPair(tt, line.Substring(offset)));
                return(ret.ToArray());
            }

            ret.Add(ConvertPair(tt, line.Substring(offset, mc[0].Index - offset)));

            int i;

            for (i = 1; i < mc.Count; i++)
            {
                offset = mc[i - 1].Index + mc[i - 1].Length;
                ret.Add(ConvertPair(mc[i - 1].Value, line.Substring(offset, mc[i].Index - offset)));
            }
            offset = mc[i - 1].Index + mc[i - 1].Length;
            ret.Add(ConvertPair(mc[i - 1].Value, line.Substring(offset)));

            return(ret.ToArray());

            //Add pair, convert [mm:ss.ss] into millisecond
            Pair ConvertPair(string timeTag, string text)
            {
                return(new Pair(TimeTagToMillionSecond(timeTag), text));
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Remove time string like [mm:ss.ss]
 /// </summary>
 /// <example>
 /// Input : [00:17:97]帰[00:18:37]り[00:18:55]道[00:18:94]は[00:19:22]
 /// Output : 帰り道は
 /// </example>
 /// <param name="text"></param>
 /// <returns></returns>
 public static string RemoveTimeTag(string text)
 {
     return(TimeTagRegex.Replace(text, ""));
 }