/// <summary> /// "SYNC" 태그만 있는 데이터를 잘라줍니다. /// </summary> /// <param name="tagOri"></param> /// <returns></returns> public SmaiSync[] Tags_Cut_Sync(string sOri) { //리턴할 리스트 List <SmaiSync> listReturn = new List <SmaiSync>(); //태그 string sSync = "sync"; //태그를 기준으로 자르고 string[] sCutData = Regex.Split(sOri, "<" + sSync, RegexOptions.IgnoreCase); //한개씩 처리 foreach (string sItem in sCutData) { SmaiSync dataTemp = new SmaiSync(); //<sami>의 해드를 분리한다. string[] sData = sItem.Split(">".ToCharArray(), 2); //해드 처리 string sHead = sData[0]; //분리한 해드에서 어트리뷰트를 추출한다. //어트리뷰트 추출 string[] sAttribute = Regex.Matches(sHead , @"(\S+)=[""']?((?:.(?![""']?\s + (?:\S +)=|[> ""']))+.)[""']?" , RegexOptions.IgnoreCase | RegexOptions.Singleline) .Cast <Match>().Select(m => m.Value).ToArray(); //어트리뷰트 만큰 생성 foreach (string sAttr in sAttribute) { //어트리 뷰트 추출 string[] sCut = sAttr.Split("=".ToCharArray(), 2); if (2 == sCut.Length) { //내용이 있다. if ("start" == sCut[0].ToLower()) { //start 어트리뷰트가 있다. //변환해서 넣는다. dataTemp.Start = Convert.ToInt32(this.CutQuotes(sCut[1])); } } //컨텐츠 추출 dataTemp.Content = sData[1]; } if (0 <= dataTemp.Start) { //스타트에 값이 있다. //값이 있을때만 데이터를 넣는다. listReturn.Add(dataTemp); } } return(listReturn.ToArray()); }
/// <summary> /// nStartIndex의 부터 뒷쪽 모든 sami데이터를 nAddSync만큼 더해줍니다. /// </summary> /// <param name="nStartIndex">시작할 인덱스</param> /// <param name="nAddSync">더해줄 싱크값(마이너스 값을 넣으면 빼줌)</param> public void Sync_Add(TypeSyncAdd_Taget typeTaget, int nStartIndex, int nAddSync) { int nStart = -1; int nTotla = -1; //타겟의 범위를 설정 한다. switch (typeTaget) { case TypeSyncAdd_Taget.One: nStart = nStartIndex; nTotla = nStartIndex + 1; break; case TypeSyncAdd_Taget.All: nStart = 0; nTotla = this.SMI.Data.Count; break; case TypeSyncAdd_Taget.NowBack: default: //기본은 뒤로 nStart = nStartIndex; nTotla = this.SMI.Data.Count; break; } //지정한 인덱스부터 끝까지 돌린다. for (int i = nStart; i < this.SMI.Data.Count; ++i) { //아이템을 선택하고 SmaiSync item = this.SMI.Data[i]; //값을 추가한다. item.Start += nAddSync; } }
private string GetSync(SmaiSync sync) { return(string.Format("<SYNC Start={0}>{1}", sync.Start, sync.Content)); }