using System.Collections.Generic; namespace automating_system_report { class FindNumberInString { public ListListNumber=new List (); public void FindNumber(string numStr) { int startIndex = 0; // substring할 시작지점 int lengthOfNumber = 0; // substring할 길이 int count=0; // foreach에서 사용할 카운터 bool bThisTurnIsNumeric; // foreach에서 문자가 숫자인지 확인할 bool if (ListNumber != null) // 함수가 이미 호출되어 리스트에 값이 있는 경우 clear { ListNumber.Clear(); } /// numStr += "/"; /// numStr에 "/"를 문자열 끝에 붙였던 이유는, /// 문자열에서 숫자가 나오다 숫자가 아닌 문자가 나오면 그 순간 숫자열을 판단 하는데, /// 문자열 마지막이 숫자로 끝날 경우, List에 저장하지 못하고 foreach문을 끝내게된다.. /// /// 마지막에 if (bThisTurnIsNumeric == true && numStr.Length == (count + 1)) 로 대체함. foreach (char c in numStr) { bThisTurnIsNumeric = (c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9'); if (lengthOfNumber == 0) //숫자가 아닌 경우, lengthOfNumber가 0이면 아직 문자열에서 숫자가 발견되지 않은 것, startIndex를 +1 { startIndex = count; } if (bThisTurnIsNumeric == true) //숫자를 찾은 경우, LengthOfNumber를 +1 { lengthOfNumber++; } if ((bThisTurnIsNumeric == false&&lengthOfNumber>0) //숫자열이 끝나고 문자가 시작되면 숫자열을 Substring할 준비가 된 것. || (bThisTurnIsNumeric == true && numStr.Length == (count + 1))) //문자열 마지막에 숫자열이 있을 경우, 다시 foreach를 실행하지 않을 것이므로 지금 저장 { ListNumber.Add(numStr.Substring(startIndex, lengthOfNumber)); lengthOfNumber = 0; // 문자열의 숫자부분 길이를 리셋 } count++; } } } } /* FindNumberInString fnfs = new FindNumberInString(); fnfs.FindNumber("오늘 날짜는 2012년 06월 19일 17:29:00 "); int i = 0; foreach (string s in fnfs.ListNumber) { Trace.WriteLine(i.ToString() + ":" + s); i++; } 결과: 0:2012 1:06 2:19 3:17 4:29 5:00 */ //
2012-06-19
C# Find number in String
문자열에서 숫자열을 찾아, 순서대로 List에 저장하는 클래스.
Tag
C#
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기