본문 바로가기

POS 개발 일상

★ 사용법과 예외처리 : Substring(), Trim() (1)

반응형

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에 시작값을 구할때 이전에 값들을 더하면 됩니다.

 

지금은 수도없이 자르다 보니 익숙해졌지만 당시엔 머리가 좀 아팠던 부분으로 기억합니다.

 

글이 길어져서 다음글로 이어쓰겠습니다.

반응형