파일패스의 확장자 치환

파일패스의 확장자 치환

기본적인 내용이지만 짜증나서 작성함.

javasciprt 에서 확장자 .bin을 .html로 바꿔야 한다면 보통 아래와 같이 쓸 것이다.

이때 주의할 것은, 정규식의 점(.)은 모든 문자를 의미하므로 앞에 역슬래시를 붙여줘야 한다는 것이다.

var basicPath = “기본파일패스”;

basicPath= basicPath.replace(/\.bin/g, “.html”);

하지만 상단의 코드보다 하단의 코드를 권장한다.

이유는 패스상에 .bin이 하나 더 포함될 수도 있고, 정규식에서 역슬래시를 쓰지 않고 점(.)만 사용할 경우 abin, bbin, cbin, …, zbin 등 다 바뀌어버리는 부작용이 일어날 수 있기 때문이다. (매우 흔하게 발견되는 사례임)

확장자는 제일 끝에 1번만 위치하는게 정상이므로, 바꿔줄 때도 lastIndexOf를 이용해 마지막 부분만 갈아끼워주는게 정석이다. 제발.

var basicPath = “기본파일패스”;
var lastIdx = basicPath.lastIndexOf(“.bin”);
if (lastIdx > -1) {
    basicPath = basicPath.substring(0, lastIdx) + “.html”;
}