private int[] Parse(string text, OnText OnTextCallback, OnTag OnTagCallback) { List <int> result = new List <int>(); int startPos = 0; int tagPos = text.IndexOf("["); while (tagPos >= 0) { // find end tag int endPos = text.IndexOf("]", tagPos + 1); if (endPos < 0) { break; } // add text before if (tagPos != startPos) { if (OnTextCallback != null) { string t = text.Substring(startPos, tagPos - startPos); OnTextCallback(t, startPos); } } string tag = text.Substring(tagPos + 1, endPos - tagPos - 1); if (OnTagCallback != null) { result.Add(tagPos); OnTagCallback(tag, tagPos); } startPos = endPos + 1; tagPos = text.IndexOf("[", startPos); } if (OnTextCallback != null) { string t = text.Substring(startPos, text.Length - startPos); OnTextCallback(t, startPos); } return(result.ToArray()); }
private int[] Parse(string text, OnText OnTextCallback, OnTag OnTagCallback) { List<int> result = new List<int>(); int startPos = 0; int tagPos = text.IndexOf("["); while (tagPos >= 0) { // find end tag int endPos = text.IndexOf("]", tagPos + 1); if (endPos < 0) break; // add text before if (tagPos != startPos) { if (OnTextCallback != null) { string t = text.Substring(startPos, tagPos - startPos); OnTextCallback(t, startPos); } } string tag = text.Substring(tagPos + 1, endPos - tagPos - 1); if (OnTagCallback != null) { result.Add(tagPos); OnTagCallback(tag, tagPos); } startPos = endPos + 1; tagPos = text.IndexOf("[", startPos); } if (OnTextCallback != null) { string t = text.Substring(startPos, text.Length - startPos); OnTextCallback(t, startPos); } return result.ToArray(); }