배열 등에서 인덱스를 잘못 사용했을 때 수정
배열 등에서 인덱스를 잘못 사용했을 때 수정
가끔 개발을 하다보면 배열 첨자를 잘못 사용하는 경우가 있다.
예를 들면 arr[y][x]를 해야하는데 arr[x][y]로 했다던지..
이 때 코드가 짧으면 수정하기 어렵지 않겠으나 양이 좀 많을 경우
실수가 남아 오히려 아웃오브바운드를 만날 수도 있다.
이럴 경우 정규식을 지원하는 편집기에서 다음과 같이 대치(Replacement)를 한다.
사용된 정규식을 설명하면
[x]뿐 아니라 [x-1] [x+1] [x*n] 같은 모든 첨자에 대해 적용할 수 있도록 (.*?) 을 붙이고
그룹으로 묶는 이유는 이 값을 다시 사용해야 하기 때문이다.
[z$1]은 위의 검색결과에서
1) [x] 일 경우 “” 빈 스트링을 찾아 [z]로 대치될 것이고
2) [x+1]일 경우 “+1″을 찾아 $1을 통해 사용할 수 있으며 덕분에 [z]대신 [z+1]의 값으로 대치될 것이다.
왜 굳이 x->y 가 아니라 x->z인지는 아래 설명을 참고하기 바란다.
우리가 흔히 x,y 변수를 swap할 때 로직을 어떻게 만들던가?
int temp = x; x = y; y = x;
그렇다, 중간에 값을 담을 임시 변수가 필요하다.
그래서 2차원 이상의 배열에서 첨자를 변경할 경우 x->z, y->x, z->y 3단계에 걸쳐서 변경한다.
1개의 댓글