JavaScript 문자열 트리밍
문자열의 시작과 끝의 공백을 모두 삭제하려면 어떻게 해야 합니까?
IE9+ 이후의 모든 브라우저에는 문자열 메서드가 있습니다.
" \n test \n ".trim(); // returns "test" here
를 하지 않는 trim()
MDN에서 다음 폴리필을 사용할 수 있습니다.
if (!String.prototype.trim) {
(function() {
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
String.prototype.trim = function() {
return this.replace(rtrim, '');
};
})();
}
을 사용하는 는, 을 사용합니다.jQuery
,$.trim(str)
또한 를 사용할 수 있으며 정의되지 않은 처리 또는 처리되지 않은 처리도 가능합니다.
다음을 참조하십시오.
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};
String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};
String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};
String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};
jQuery의 트리밍은 해당 프레임워크를 이미 사용하고 있는 경우 편리합니다.
$.trim(' your string ');
저는 jQuery를 자주 사용하는 편이기 때문에 현을 다듬는 것은 자연스러운 일입니다.하지만 밖에서 jQuery에 대한 반발이 있을 가능성이 있나요?:)
은 '에 하다', '다음에 하다', '다음에 하다', '다음에 해 주세요.String
JavaScript가 ..trim()
ECMAScript 5에서의 방법.따라서 트림 방법을 프로토타입으로 제작하려면 먼저 트림 방법이 이미 존재하는지 확인해야 합니다.
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
};
}
네이티브 추가: JavaScript 1.8.1 / ECMAScript 5
따라서 다음에서 지원됩니다.
파이어폭스: 3.5 이상
Safari: 5 이상
Internet Explorer: IE9+ (표준 모드만)http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx
크롬: 5 이상
Opera: 10.5 이상
ECMAScript 5 지원 테이블:http://kangax.github.com/es5-compat-table/
사용할 수 있는 실장은 많이 있습니다.가장 명백한 것은 다음과 같습니다.
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
" foo bar ".trim(); // "foo bar"
여기 간단한 버전 JavaScript trim의 일반적인 함수는 무엇입니까?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
이 질문은 3년 전에 했던 것으로 알고 있습니다. 이제.String.trim()
자바스크립트를 들어, 직접 수 .
document.getElementById("id").value.trim();
사용하는 jQuery를 합니다.jQuery.trim()
를 들어 다음과 같습니다예를 들어 다음과 같습니다.
if( jQuery.trim(StringVariable) == '')
Flagrant Badassery에는 벤치마크 정보와 함께 11가지 다른 트림이 있습니다.
http://blog.stevenlevithan.com/archives/faster-trim-javascript
놀랍지 않게 regexp 기반은 기존 루프보다 느립니다.
여기 제 개인적인 것이 있습니다.이 코드는 오래됐어!JavaScript 1.1과 Netscape 3용으로 작성했는데, 그 이후로 업데이트는 조금밖에 되지 않았습니다.(원래 String.charAt)
/**
* Trim string. Actually trims all control characters.
* Ignores fancy Unicode spaces. Forces to string.
*/
function trim(str) {
str = str.toString();
var begin = 0;
var end = str.length - 1;
while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
while (end > begin && str.charCodeAt(end) < 33) { --end; }
return str.substr(begin, end - begin + 1);
}
Native JavaScript 메서드( , 및 )를 사용합니다.
String.trim()
는 IE9+ 및 기타 모든 주요 브라우저에서 지원됩니다.
' Hello '.trim() //-> 'Hello'
String.trimLeft()
★★★★★★★★★★★★★★★★★」String.trimRight()
는 비표준이지만 IE를 제외한 모든 주요 브라우저에서 지원됩니다.
' Hello '.trimLeft() //-> 'Hello '
' Hello '.trimRight() //-> ' Hello'
IE ie ie ie ie ie ie ie ie ie ie ie ie ie ie ie ie ie 。
if (!''.trimLeft) {
String.prototype.trimLeft = function() {
return this.replace(/^\s+/,'');
};
String.prototype.trimRight = function() {
return this.replace(/\s+$/,'');
};
if (!''.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
}
String.prototype.trim = String.prototype.trim || function () {
return this.replace(/^\s+|\s+$/g, "");
};
String.prototype.trimLeft = String.prototype.trimLeft || function () {
return this.replace(/^\s+/, "");
};
String.prototype.trimRight = String.prototype.trimRight || function () {
return this.replace(/\s+$/, "");
};
String.prototype.trimFull = String.prototype.trimFull || function () {
return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "").replace(/\s+/g, " ");
};
뻔뻔스럽게도 맷 듀렉에게서 훔쳤지
var trim = (function() {
// if a reference is a `String`.
function isString(value){
return typeof value == 'string';
}
// native trim is way faster: http://jsperf.com/angular-trim-test
// but IE doesn't have it... :-(
// TODO: we should move this into IE/ES5 polyfill
if (!String.prototype.trim) {
return function(value) {
return isString(value) ?
value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
};
}
return function(value) {
return isString(value) ? value.trim() : value;
};
})();
을 '아주머니'라고 부릅니다.trim(" hello ")
간단한 코드를 사용하다
var str = " Hello World! ";
alert(str.trim());
브라우저 지원
Feature Chrome Firefox Internet Explorer Opera Safari Edge
Basic support (Yes) 3.5 9 10.5 5 ?
이전 브라우저의 경우 프로토타입 추가
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
다음은 매우 간단한 방법입니다.
function removeSpaces(string){
return string.split(' ').join('');
}
트리밍을 사용한 lib가 있어요.다음 코드를 사용하여 해결했습니다.
String.prototype.trim = String.prototype.trim || function(){ return jQuery.trim(this); };
2008년 JS에서는 .trim() 함수를 사용할 수 없을 때 trim용으로 이 함수를 작성했습니다.오래된 브라우저 중 일부는 여전히 .trim() 함수를 지원하지 않으며, 이 함수가 누군가에게 도움이 될 수 있기를 바랍니다.
트림 기능
function trim(str)
{
var startpatt = /^\s/;
var endpatt = /\s$/;
while(str.search(startpatt) == 0)
str = str.substring(1, str.length);
while(str.search(endpatt) == str.length-1)
str = str.substring(0, str.length-1);
return str;
}
설명:trim() 함수는 문자열 오브젝트를 받아들여 선두 및 후행 공백(스페이스, 탭 및 줄바꿈)을 삭제하고 잘라낸 문자열을 반환합니다.이 기능을 사용하여 양식 입력을 트리밍하여 유효한 데이터를 전송할 수 있습니다.
이 함수는 예를 들어 다음과 같은 방법으로 호출할 수 있습니다.
form.elements[i].value = trim(form.elements[i].value);
플레인 JavaScript를 사용하여 실행할 수 있습니다.
function trimString(str, maxLen) {
if (str.length <= maxLen) {
return str;
}
var trimmed = str.substr(0, maxLen);
return trimmed.substr(0, trimmed.lastIndexOf(' ')) + '…';
}
// Let's test it
sentenceOne = "too short";
sentencetwo = "more than the max length";
console.log(trimString(sentenceOne, 15));
console.log(trimString(sentencetwo, 15));
여기에 어떤 버그가 숨어있을지 모르겠지만, 나는 이것을 사용한다.
var some_string_with_extra_spaces=" goes here "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])
또는 텍스트에 포함된 경우 다음과 같이 입력합니다.
console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])
재시도:
console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])
TypeScript는 다음과 같습니다.
var trim: (input: string) => string = String.prototype.trim
? ((input: string) : string => {
return (input || "").trim();
})
: ((input: string) : string => {
return (input || "").replace(/^\s+|\s+$/g,"");
})
네이티브 프로토타입을 사용할 수 없는 경우 regex로 폴백됩니다.
mine은 단일 정규식을 사용하여 트리밍이 필요한 경우를 찾고 해당 정규식의 결과를 사용하여 원하는 하위 문자열 경계를 결정합니다.
var illmatch= /^(\s*)(?:.*?)(\s*)$/
function strip(me){
var match= illmatch.exec(me)
if(match && (match[1].length || match[2].length)){
me= me.substring(match[1].length, p.length-match[2].length)
}
return me
}
여기에 들어간 설계 결정 중 하나는 서브스트링을 사용하여 최종 캡처를 수행하는 것입니다. s/\?:/(중간 캡처를 작성) 그러면 대체 fragment는 다음과 같습니다.
if(match && (match[1].length || match[3].length)){
me= match[2]
}
이 임팩트에서는 두 가지 퍼포먼스 베팅이 있습니다.
서브스트링 구현은 원래 문자열의 데이터를 복사합니까?만약 그렇다면, 첫 번째에서 문자열을 잘라야 할 때, 첫 번째 정규식(바람직하게는 부분적일 수 있음)과 두 번째 부분 문자열 추출에 이중 트래버설이 있습니다.서브스트링 구현은 원래 문자열만 참조하기 때문에 서브스트링과 같은 작업은 거의 자유로울 수 있습니다.
regex include에서의 포획은 얼마나 좋은가?중간 기간, 출력 값은 잠재적으로 매우 길 수 있습니다. 저는 모든 regex의 캡처가 수백 KB의 입력 캡처에서 중단되지 않을 것이라고 확신할 수 없었습니다. 하지만 테스트도 하지 않았습니다(너무 많은 런타임, 죄송합니다!).두 번째는 항상 캡처를 실행합니다. 엔진이 충돌하지 않고 캡처를 실행할 수 있다면 위의 스트링-로핑 기술 중 일부를 사용할 수 있습니다.
IE9+ 및 기타 브라우저의 경우
function trim(text) {
return (text == null) ? '' : ''.trim.call(text);
}
언급URL : https://stackoverflow.com/questions/498970/trim-string-in-javascript
'programing' 카테고리의 다른 글
월말일 계산 (0) | 2022.11.26 |
---|---|
Sequel Pro와 MySQL을 연결하지 못했습니다. (0) | 2022.11.26 |
Java에서 printStackTrace() 메서드는 어떤 용도로 사용됩니까? (0) | 2022.11.26 |
Java "user.dir" 속성 - 정확히 어떤 의미입니까? (0) | 2022.11.26 |
PHP 스크립트에서 JSON 반환 (0) | 2022.11.26 |