POS 개발을 하다 보면 문자열을 자르는 일이 빈번하게 일어납니다.
그때 사용하는 함수가 Substring()입니다.
Substring() 함수는 개발 중에 오류가 가장 자주 발생하는 부분 이기도 합니다.
그 이유는 문자열을 자르다 보면 인덱스를 잘못 지정하는 경우가 자주 발생하기 때문입니다.
Substring() 함수에 사용법은 아래와 같습니다.
string str = "OneTwo";
string temp = string.empty;
위와 같이 변수를 생성했을때,
temp 변수에 One을 넣고 싶을 때는
temp = str.Substring(0, 3);
temp 변수에 Two를 넣고 싶을 때는
temp = str.Substring(3, 3);
라고 입력하면 됩니다.
Substring() 함수는 괄호안에 ( 인덱스 시작위치, 인덱스 이동할 값 ) 을 입력하면 됩니다.
str 변수에 "One"의 경우 인덱스 시작위치는 0 이고, 인덱스가 이동할 값은 3 입니다.
str 변수에 "Two"의 경우 인덱스 시작위치는 3 이고, 인덱스가 이동할 값은 3 입니다.
그런데 POS 개발을 하다보면 전문을 자르는 일이 정말 많습니다.
예를들어
string str = "OneTwoThreeFourFive";
string[] temp = new string[5];
위와 같이 변수를 생성했을때,
신입시절에는 인덱스 계산하는게 머리가 아팠습니다.
그런데 POS 전문은 연속적으로 잘라가는 것이 대부분입니다.
따라서
temp[0] = str.Substring(0, 3);
temp[1] = str.Substring(3, 3);
temp[2] = str.Substring(6, 5);
temp[3] = str.Substring(11, 4);
temp[4] = str.Substring(15, 4);
위와 같이 자르게 되는데
위에 인덱스 계산을 보면, 앞에서 자른 인덱스의 시작값과 이동값을 더한것이 다음 인덱스의 시작값입니다.
temp 배열의 0번째 인덱스의 시작 값은 0, 이동값은 3
따라서 다음값은 시작값이 0 + 3 = 3
temp 배열의 1번째 인덱스의 시작 값은 3, 이동값은 3
다음값은 시작값이 3 + 3 = 6
temp 배열의 2번째 인덱스의 시작값은 6, 이동값은 5
다음값은 시작값이 6 + 5 = 11
이 됩니다.
다음번 Substring에 시작값을 구할때 이전에 값들을 더하면 됩니다.
지금은 수도없이 자르다 보니 익숙해졌지만 당시엔 머리가 좀 아팠던 부분으로 기억합니다.
글이 길어져서 다음글로 이어쓰겠습니다.
'POS 개발 일상' 카테고리의 다른 글
★ 공백(empty)과 널(null) 값 예외처리 : string.IsNullOrEmpty() (0) | 2020.06.11 |
---|---|
★ 사용법과 예외처리 : Substring(), Trim() (2) (0) | 2020.05.29 |
바코드 생성 사이트 (0) | 2020.05.26 |