ioerror

Javascript 에서 문자열의 공백 삭제 하기 - trim 본문

JavaScript

Javascript 에서 문자열의 공백 삭제 하기 - trim...

반응형

왜 자바스크립트에는 trim이 없을까?

앞뒤 공백을 삭제하거나 아니면 문자열의 모든 공백을 삭제하거나 하는 상황이 얼마나 자주발생하는데.

jQuery의 $.trim()도 있지만 jQuery를 사용못하는 상황이거나 사용하는 라이브러리에 문자열을 삭제하는 trim 함수가 없다면

직접 만들어서 사용해야 한다.

 

함수형

/**
* trim('문자열',[compress|rtrim|ltrim])
*/
function trim(str_val,optval) {
	if(optval == "compress") 			// 문자열의 모든 공백 제거
  {
  	return str_val.replace(/\s+/g, ""); 
  }
  else if(optval == "rtrim") 		// 문자열의 오른쪽 공백만 제거
  { 
  	return str_val.replace(/\s+$/, ""); 
  }
  else if(optval == "ltrim") 		// 문자열의 왼쪽 공백 제거
  { 
  	return str_val.replace(/^\s+/, ""); 
  }
  else 													// 문자열 앞뒤 공백 제거(trim)
  { 
  	return str_val.replace(/^\s+/, "").replace(/\s+$/, ""); 
  }
}

 

 

문자열 객체형

/**
* " 문자열 입니다. ".trim([compress|rtrim|ltrim])
*/

String.prototype.trim = function(optval){
  if(optval == "compress") 			// 문자열의 모든 공백 제거
  {
  	return this.replace(/\s+/g, ""); 
  }
  else if(optval == "rtrim") 		// 문자열의 오른쪽 공백만 제거
  { 
  	return this.replace(/\s+$/, ""); 
  }
  else if(optval == "ltrim") 		// 문자열의 왼쪽 공백 제거
  { 
  	return this.replace(/^\s+/, ""); 
  }
  else 								// 문자열 앞뒤 공백 제거(trim)
  { 
  	return this.replace(/^\s+/, "").replace(/\s+$/, ""); 
  }
}

 

정규표현식은 슬래쉬(/)로 시작해서 슬래쉬(/)로 끝나고 \s 는 공백(space)를 의미한다.

compress 에서 \s+ 의 플러스(+)는 해당 문자가 하나이상 나오는 것을 뜻하고 g는 정규식의 반복 검사를 의미한며 i는 대고문자 구분없음을 의미한다.

rtrim 은 오른쪽 공백 제거이니까 공백을 찾는데 문자열 끝($)과 연결되는 것을 찾고 반대로 ltrim은 문자열 시작(^)부터 공백인 것을 찾는 것이다.

trim은 앞뒤 공백 제거미으모 rtrim과 ltrim 을 실행하면 된다.

반응형
Comments