[javascript] 문자열의 시작과 끝에서 공백 자르기
제목 문자열의 시작과 끝에서 공백을 자르는 방법을 찾으려고합니다. 나는 이것을 사용하고 있었지만 작동하지 않는 것 같습니다.
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
어떤 아이디어?
답변
참고 : 2015 년 현재 모든 주요 브라우저 (IE> = 9 포함)는 String.prototype.trim ()을 지원 합니다. 이것은 대부분의 유스 케이스에서 단순히 수행하는 str.trim()
것이 질문에서 요구하는 것을 달성하는 가장 좋은 방법임을 의미합니다.
Steven Levithan trim
은 성능 측면에서 Javascript 의 다양한 구현을 분석했습니다 .
그의 추천은 :
function trim1 (str) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
“빠른 크로스 브라우저 인 범용 구현”및
function trim11 (str) {
str = str.replace(/^\s+/, '');
for (var i = str.length - 1; i >= 0; i--) {
if (/\S/.test(str.charAt(i))) {
str = str.substring(0, i + 1);
break;
}
}
return str;
}
“모든 브라우저에서 긴 문자열을 예외적으로 빠르게 처리하려면”
참고 문헌
답변
jQuery를 사용하는 것이 옵션 인 경우 :
/**
* Trim the site input[type=text] fields globally by removing any whitespace from the
* beginning and end of a string on input .blur()
*/
$('input[type=text]').blur(function(){
$(this).val($.trim($(this).val()));
});
또는 간단히 :
$.trim(string);
답변
으로 @ChaosPandion는 언급의 String.prototype.trim
방법은 도입 된 ECMAScript를 5 판 , 사양 일부 구현이 가장 좋은 방법은 기본 구현을 감지하고 그것을 선언하는 것입니다, 그래서 이미이 방법을 포함 만 이 사용할 수없는 경우 :
if (typeof String.prototype.trim != 'function') { // detect native implementation
String.prototype.trim = function () {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
};
}
그런 다음 간단하게 할 수 있습니다.
title = title.trim();
답변
나는 이것이 오래된 게시물이라는 것을 알고 있지만 솔루션을 공유 할 것이라고 생각했습니다. (모두가 단지 않는 짧은 코드에 대한 탐구에서 사랑 간결한 정규식), 하나 대신 사용할 수 있습니다 :
title = title.replace(/(^\s+|\s+$)/g, '');
BTW : blog.stevenlevithan.com 위에 공유 된 링크를 통해 동일한 테스트를 실행했습니다. 빠른 JavaScript 트림 과이 패턴은 다른 모든 핸드를 이겼습니다!
IE8을 사용하여 test13으로 테스트를 추가했습니다. 결과는 다음과 같습니다.
원래 길이 : 226002 트림 1
: 110ms (길이 : 225994)
트림 2 : 79ms (길이 : 225994)
트림 3 : 172ms (길이 : 225994)
트림 4 : 203ms (길이 : 225994)
트림 5 : 172ms (길이 : 225994)
트림 6 : 312ms (길이 : 트림
7 : 203ms (길이 : 225994)
트림 8 : 47ms (길이 : 225994)
트림 9 : 453ms (길이 : 225994)
트림 10 : 15ms (길이 : 225994)
트림 11 : 16ms (길이 : 225994)
트림 12 : 31ms (길이 : 225994)
trim13 : 0ms (길이 : 226002)
답변
ECMAScript 5는 trim
이를 지원 하며 Firefox에서 구현되었습니다.
답변
여기, 이것은 당신이 필요한 모든 것을해야합니다
function doSomething(input) {
return input
.replace(/^\s\s*/, '') // Remove Preceding white space
.replace(/\s\s*$/, '') // Remove Trailing white space
.replace(/([\s]+)/g, '-'); // Replace remaining white space with dashes
}
alert(doSomething(" something with some whitespace "));
답변
다음은 js에서 문자열을 자르기 위해 과거에 사용한 몇 가지 방법입니다.
String.prototype.ltrim = function( chars ) {
chars = chars || "\\s*";
return this.replace( new RegExp("^[" + chars + "]+", "g"), "" );
}
String.prototype.rtrim = function( chars ) {
chars = chars || "\\s*";
return this.replace( new RegExp("[" + chars + "]+$", "g"), "" );
}
String.prototype.trim = function( chars ) {
return this.rtrim(chars).ltrim(chars);
}