[ 자바스크립트 ] substr() 🕔 2016. 9. 11. 22:20
최종 수정일 : 2016. 9. 28.
substr()은 자바스크립트에서 기본적으로 제공되는 함수이다.
전체 문장에서 일부분만을 가지고서 작업해야 될 때 사용하는 함수이며,
전체 문장(문자열) 안에서, 가져올 문자열의 위치(문자열의 시작점)과 그 길이를 입력해서 사용할 수 있다.
substr( 문자열의 시작점, 문자열의 길이 ) substr( start, length )
Polyfill
인터넷 익스플로러(IE) 8 이하에서처럼, 음수값이 적용되지 않을 경우를 대비해서 추가해야될 내용이다.
<script type="text/javascript"> // 출처 : String.prototype.substr() ─ MDN (영문) if ( "ab".substr(-1) != "b" ){ String.prototype.substr = function substr ( substr ){ return function ( start, length ){ return substr.call( this, start < 0 ? this.length + start : start, length ) } }( String.prototype.substr ); } </script>
가져올 문자열의 위치를 알고 있을 때
아래는, substr() 함수의 기본적인 사용법에 대한 내용이다.
1. 시작점으로 설정할 위치값만 넣어주면, 가져오는 문자열은 시작점(위치값)부터 그 문장의 끝까지이다.
<button type="button" onclick="testing()"> 클릭하세요 </button> <p id="text">Fri, 09 Sep 2016 14:24:09</p> <p id="demo1"></p> <p id="demo2"></p> <script type="text/javascript"> var string = document.getElementById( "text" ).innerHTML; var first = string.substr( 0 ); var second = string.substr( 1 ); function testing (){ demo1.innerHTML = first; demo2.innerHTML = second; } </script>
<p id="text">Fri, 09 Sep 2016 14:24:09</p>
<p id="demo1"> </p>
<p id="demo2"> </p>
2. 위치값으로 양수(+)를 넣어주면, 시작점은 그 숫자만큼 앞에서부터 뒤쪽으로 이동한 지점이다.
<button type="button" onclick="testing()"> 클릭하세요 </button> <p id="text">Fri, 09 Sep 2016 14:24:09</p> <p id="demo1"></p> <p id="demo2"></p> <script type="text/javascript"> var string = document.getElementById( "text" ).innerHTML; var positive1 = string.substr( 12 ); var positive2 = string.substr( 12, 4 ); function testing (){ demo1.innerHTML = positive1; demo2.innerHTML = positive2; } </script>
<p id="text">Fri, 09 Sep 2016 14:24:09</p>
<p id="demo1"> </p>
<p id="demo2"> </p>
3. 위치값으로 음수(-)를 넣어주면, 시작점은 그 숫자만큼 뒤에서부터 앞쪽으로 이동한 지점이다.
<button type="button" onclick="testing()"> 클릭하세요 </button> <p id="text">Fri, 09 Sep 2016 14:24:09</p> <p id="demo1"></p> <p id="demo2"></p> <script type="text/javascript"> var string = document.getElementById( "text" ).innerHTML; var negative1 = string.substr( -8 ); var negative2 = string.substr( -8, 5 ); function testing (){ demo1.innerHTML = negative1; demo2.innerHTML = negative2; } </script>
<p id="text">Fri, 09 Sep 2016 14:24:09</p>
<p id="demo1"> </p>
<p id="demo2"> </p>
4. 가져올 문자열의 길이를 0(zero)으로 설정해주면, 그 길이가 0인 문자를 가져오라는 뜻이 되므로
말 그대로 길이가 0인, 빈 문자열( "" )을 가져다준다.
따라서, 아래 버튼을 누르게 되면, 마치 함수가 실행되지 않은 것처럼 여겨질 것이다.
<button type="button" onclick="testing()"> 클릭하세요 </button> <p id="text">Fri, 09 Sep 2016 14:24:09</p> <p id="demo1"></p> <p id="demo2"></p> <script type="text/javascript"> var string = document.getElementById( "text" ).innerHTML; var zero1 = string.substr( 12, 0 ); var zero2 = string.substr( -8, 0 ); function testing (){ demo1.innerHTML = zero1; demo2.innerHTML = zero2; } </script>
<p id="text">Fri, 09 Sep 2016 14:24:09</p>
<p id="demo1"> </p>
<p id="demo2"> </p>
5. 길이값으로 전체 문자열의 길이보다 더 큰 숫자를 넣어주면, 가져오는 문자열은 위치값부터 그 문장의 끝까지이다.
전체 길이에서 위치값을 빼준 숫자보다 더 클 경우에도, 결과는 같다.
<button type="button" onclick="testing()"> 클릭하세요 </button> <p id="text">Fri, 09 Sep 2016 14:24:09</p> <p id="demo"></p> <script type="text/javascript"> var string = document.getElementById( "text" ).innerHTML; var over = string.substr( 12, 30 ); function testing (){ demo.innerHTML = over; } </script>
<p id="text">Fri, 09 Sep 2016 14:24:09</p>
<p id="demo"> </p>
가져올 문자열의 위치를 모를 때
1. indexOf() 함수를 사용하여 위치값 알아내기
<script type="text/javascript"> var str = "안녕하세요. 즐거운 시간을 보내고 계신가요?"; var index = str.indexOf( " 즐거운 " ); var sub1 = str.substr( 0, index ); var sub2 = str.substr( index, 7 ); function testing (){ demo.innerHTML = sub1 + "♪" + sub2; } </script>
내가 substr()을 주로 사용하는 경우는,
소수점이 있는 숫자들에서, 소수점의 특정 자릿수에서, 그 이후의 숫자를 잘라버려야 할 때이다.
아래는, indexOf() 함수를 사용하여 소수점의 위치를 찾아낸 후, substr()으로 원하는 자릿수까지만 가져오는 방법이다.
function roundingDown ( number, place ){ var str = "" + number; // 숫자를 문자로 바꿔주기 var index = str.indexOf( "." ); // 소수점의 위치 찾기 if ( index < 0 ){ return number; } // 소수점이 없으면, 숫자를 그대로 돌려주고 끝내기 str = str.substr( 0, index + place ); // 소수점 이하, 원하는 부분까지만 가져오기 return parseFloat( str ); // 숫자로 다시 변환해서 돌려주고 끝내기 } var array = [ 369 , 123.456 , 78.9123 , 4.56 ]; // 여러 숫자들을 담아놓은 배열. var place = 3; // 삭제를 시작할 위치( 소수점 이하 셋째자리부터 버리기로 함 ) var x = 0; for ( x = 0; x < array.length; x++ ){ // 배열 안의 소수들을 버림하기 array[ x ] = roundingDown( array[ x ], place ); } function testing (){ demo.innerHTML = array.join( " , " ); }
2. search()와 정규식(정규표현식)을 사용하여 위치값 알아내기
<script type="text/javascript"> var str = "지금부터 500원 할인된 가격으로 팝니다."; var search = str.search( /\d+/ ); var sub = str.substr( search, 7 ); function testing (){ demo.innerHTML = sub; } </script>
가져올 문자열이, 대문자인지 소문자인지가 아리송할 때 써먹는 방법이다.
<script type="text/javascript"> var str = "Welcome Seoul, Korea!!"; var search = str.search( /seoul/i ); var sub = str.substr( search, 12 ); function testing (){ demo.innerHTML = sub; } </script>
이 내용이 도움이 되셨다면, 아래의 하트 버튼을 눌러주세요 *^^*
'JAVASCRIPT > String' 카테고리의 다른 글
[ 자바스크립트 ] charCodeAt VS codePointAt (0) | 2017.05.07 |
---|---|
[ 자바스크립트 ] 문자열에서의 repeat() 사용법 (0) | 2016.10.27 |
[ 자바스크립트 ] 문자열에서의 includes() 사용법 (0) | 2016.10.26 |
[ 자바스크립트 ] 문자열에서의 endsWith() & startsWith() 사용법 (0) | 2016.10.20 |
[ 자바스크립트 ] trim() (0) | 2016.01.08 |