C# 숫자만 입력 하기 위해서 정규표현식을 사용하여 알고리즘을 만들었습니다.
제가 필요한 부분은 이렇게 많은 영어와 숫자중에서 grp-a001-01-000000xxxxxxx 로 시작하는 항목만 필요하였으며 이를 정규표현식으로 아래처럼 만들었습니다.
그냥 드래그로 쭈욱~~ 복사하고 이것을 프로그램에 입력하면 알아서 grp-a001-01-000000xxxxxxx로 되어진 항목만 빼오는것이죠.
아래처럼 왼쪽 textBox 항목에 위의 클립아트 text를 붙여넣으면 알아서 원하는 패턴 항목만 가져옵니다.
Regex.Matches(“검색할문자열”, pattern)
패턴에 아래 [ 괄호 안 ] 내용을 입력하여 사용하면됩니다.
위의 소스코드 다운받아서 직접 해보시면 어떻게 동작하는지 알 수 있습니다.
c# 숫자만 입력 C#숫자만 가져오기
[0-9]
C#영어만 가져오기 (대소문자 모두 가져옵니다)
[a-zA-Z]
C#숫자 영어 문자만 가져오기
[a-zA-Z0-9]
간단하게 린크드리스트(LinkedList) 와 정규표현식(RegularExpressions )을 사용하였습니다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; namespace grp_a001_01_0000000000000 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { //grp-a001-01-000000023156551 LinkedList<string> linkedList_groupStringAll = new LinkedList<string>(); LinkedList<string> linkedList_groupStringUnique = new LinkedList<string>(); string pattern = "(grp-)(?<groupString>[a-zA-Z0-9]{4}-[0-9]{2}-[0-9]{15}?)"; MatchCollection matches = Regex.Matches(textBox1.Text, pattern); textBox2.Text = string.Empty; int matchesIndex = 0; foreach (Match match in matches) { if (match.Groups["groupString"].Length > 0) { linkedList_groupStringAll.AddLast(match.Groups["groupString"].Value); } } foreach (string groupListEachItem in linkedList_groupStringAll) { int compareIndex = 0; foreach (string groupListEachItem_compare in linkedList_groupStringAll) { if(groupListEachItem.Equals(groupListEachItem_compare)) { if(compareIndex++ > 2) { break; } } } if(compareIndex == 1) { linkedList_groupStringUnique.AddLast(groupListEachItem); } } matchesIndex = 0; foreach (string groupListEachItem in linkedList_groupStringUnique) { if (++matchesIndex == linkedList_groupStringUnique.Count) { textBox2.AppendText(string.Format("{0}", groupListEachItem)); } else { textBox2.AppendText(string.Format("{0}\r\n", groupListEachItem)); } } textBox2.AppendText(string.Format("\r\n총:{0,0}개", linkedList_groupStringUnique.Count)); } } }
전체 소스파일은 제가 올려놓았으니 필요하신분들은 다운받아서 사용해보시기 바랍니다.
목차