예를 들어, 파일 이름이 될 수있는 위치 x = filename.jpg
를 가정하고 싶습니다 (파일 이름에는 단순화하기 위해 [a-zA-Z0-9-_] 만 포함되어 있다고 가정하십시오).filename
filename
I 톱 x.substring(0, x.indexOf('.jpg'))
에 DZone 조각 , 아닌 것 x.substring(0, x.length-4)
더 잘 수행? 왜냐하면 length
속성이며 문자 검사를 수행하지 않는 반면 indexOf()
함수이며 문자 검사를 수행하기 때문입니다.
답변
확장의 길이를 알고 있으면 사용할 수 있습니다 x.slice(0, -4)
(여기서 4는 확장 및 점의 세 문자 임).
길이를 모르면 @John Hartsock 정규식이 올바른 접근 방법입니다.
정규 표현식을 사용하지 않으려면 다음을 시도해보십시오 (성능이 낮음).
filename.split('.').slice(0, -1).join('.')
확장자가없는 파일에서는 실패합니다.
답변
확실하지 빠르게 수행 할 것입니다하지만이 같은 확장에 관해서이 더 안정적 일 것입니다 무슨 .jpeg
또는.html
x.replace(/\.[^/.]+$/, "")
답변
에서 Node.js를 다음과 같이 확장자가없는 파일의 이름을 얻을 수있다.
const path = require('path');
const filename = 'hello.html';
path.parse(filename).name; // hello
path.parse(filename).ext; // .html
Node.js 문서 페이지 에서 추가 설명 .
답변
x.length-4
3 자의 확장명 만 설명합니다. 당신은 어떤이있는 경우 filename.jpeg
또는 filename.pl
?
편집하다:
당신은 항상의 확장이있는 경우에 답변을 … 물론 .jpg
, x.length-4
잘 작동합니다.
그러나 확장의 길이를 모르는 경우 여러 가지 솔루션이 더 우수하고 강력합니다.
x = x.replace(/\..+$/, '');
또는
x = x.substring(0, x.lastIndexOf('.'));
또는
x = x.replace(/(.*)\.(.*?)$/, "$1");
OR (파일 이름에 하나의 점만 있음)
parts = x.match(/[^\.]+/);
x = parts[0];
OR (점 하나만 있음)
parts = x.split(".");
x = parts[0];
답변
마지막 점이 확장 구분 기호라는 가정을 사용할 수 있습니다.
var x = 'filename.jpg';
var f = x.substr(0, x.lastIndexOf('.'));
파일 확장자가 없으면 빈 문자열을 반환합니다. 이 기능을 사용하여 수정하려면
function removeExtension(filename){
var lastDotPosition = filename.lastIndexOf(".");
if (lastDotPosition === -1) return filename;
else return filename.substr(0, lastDotPosition);
}
답변
나는 읽기가 너무 어렵지 않은 하나의 라이너이기 때문에 이것을 좋아합니다.
filename.substring(0, filename.lastIndexOf('.')) || filename
답변
0.12.x 이전의 Node.js 버전에서 :
path.basename(filename, path.extname(filename))
물론 이것은 0.12.x 이상에서도 작동합니다.