JavaScript/Javascript_Advanced

[JS]String 객체

MoZZANG 2022. 4. 19. 19:35

※ String객체에 대한 포스팅은 자바와 거의 똑같기 때문에 중요하거나 자주사용하는 것 혹은 주의할 것들에 대해서만 포스팅 하겠습니다.

 

 

//4]특정 위치(인덱스)의 하나의 문자 얻어오기
//charAt(인덱스):인덱스는 0부터 시작
document.write('<h2>charAt(인덱스)</h2>');
document.write(str3.charAt(3)+'<br/>');
document.write('자바스크립트'.charAt(2)+'<br/>');
//5]문자열에서 특정 문자열 얻어오기 substring(시작인덱스,끝인덱스): 끝인덱스 -1
document.write('<h2>substring(시작인덱스,끝인덱스)</h2>');
document.write('ACADEMY'.substring(3,7));
//5-1]문자열에서 특정 문자열 얻어오기2 -substr(시작인덱스,문자열갯수) //Deprecated됨
document.write('<h2>substr(시작인덱스,갯수)</h2>');
document.write('ACADEMY'.substr(3,4));
document.write('<h2>charCodeAt(인덱스)</h2>');
//6]특정 위치의 아스키 코드값 가져오기 charCodeAt(인덱스) :자바에서는 codePointAt(int index)
document.write('ACADEMY'.charCodeAt(3));
document.write('<h2>fromCharCode(코드값)</h2>');
document.write(String.fromCharCode(68));

 

 

/*
    ※String객체는 문자 하나 하나가 배열형태 처럼로 저장됨.
    예]var str="AB가C";
    str[0]="A"
    str[1]="B"
    str[2]="가"
    str[3]="C" 형태로 저장됨.

    var str="AB가C"; 는  1]그리고 2]와 같은 표현이다

    //1]
    var str= new Array(4);
    str[0]="A"
    str[1]="B"
    str[2]="가"
    str[3]="C"
    //2]
    var str = ["A","B","가","C"];
    */
 document.write('<h2>문자열을 배열처럼</h2>');
   for(var i=0;i < str3.length;i++)
    document.write(str3[i]+'<br/>');

   //str3.forEach(function(e,index){});//str3.forEach is not a function
   //String은 유사배열이므로 forEach()함수는 가지고 있지 않다.
   for(key in str3)
    document.write(key + ' : '+str3[key]+'<br/>');

 

 

 

 

/*
    문]
      문자열을 매개변수로 받는 함수로,
      받은 인자가 숫자형식이 아니면 false반환
      숫자형식이면 true를 반환하는 함수를 정의해라.
      그리고 호출해서 결과 확인해라...   
      //"12A"->false  ,"가100"->false, "99"->true      
    */
   /*
    자스에서 비교시
    1.숫자와 숫자형식의 문자열 =>숫자형식의 문자열이 숫자로 변환
      '100' >= 99 : 100 >= 99 :true
    2.슷지형식 문자열 과 숫자형식 문자열 => 문자열 비교할때 처럼 한자씩 차례로 코드값 비교
      '100' >='99' :문자열 비교 :false
    3.슷자형식이 아닌 문자열과 숫자 :무조건 false
      '가' > 99 : false
      '가' > '99' : true 
   */

▲ 물론 isNaN()이라는 편리한 함수가 있지만 그래도 없이 String객체의 함수만으로 만들어보자.

 

 

var isNumber = function(str){
      //방법1]자스함수 미 사용
      //위의 3번 숫자와 문자열 비교(모든 하나의 숫자는 0과 9사이다)
      /*
      for(var i=0;i<str.length;i++){
        if(!(str[i]>=0 && str[i]<=9)){
          return false
        }
      }*/
      //방법2]자스 함수 사용
      /*
      for(var i=0;i<str.length;i++)
        if(!(str.charAt(i)>=0 && str.charAt(i)<=9))
          return false;*/
      //방법3]자스 함수 사용
      for(var i=0;i<str.length;i++)
        if(!(str[i].charCodeAt(0) >='0'.charCodeAt(0) && str[i].charCodeAt(0) <='9'.charCodeAt(0))) 
          return false;    
      return true;
  };
  
  
  
  document.write(isNumber('12A')+'<br/>');//false
  document.write(isNumber('가100')+'<br/>');//false
  document.write(isNumber('1000사')+'<br/>');//false
  document.write(isNumber('1004')+'<br/>');//true

 

 

 

//8]구분자로 문자열 분리-배열 반환
  //  split(구분자[정규표현식][,limit])
  //  ※만약 해당 구분자가 없으면 무조건 배열크기가
  //  1인 배열에 문자열 전체가 저장됨.
  var tel="010.1234.5678";
  //var arr=tel.split('.');//.을 구분자로 사용
  //var arr=tel.split('.',2);
  //var arr=tel.split(/./g);//이때 .은 임의의 한 문자(정규 표현식)
  var arr=tel.split(/\./g); // \.은 문자 .
  arr.forEach(function(item,index){
    document.write('arr['+index+'] : '+item+'<br/>');
  });

 

 

 

//9]특정 문자열의 인덱스값 알아내기
  //indexOf("찾는 문자열"):찾는 문자열이 존재하면
  //                  찾는 문자열의 시작인덱스 값 반환
  //                  존재하지 않으면 -1 반환.
  document.write('<h2>number indexOf(찾는 문자렬)</h2>');
  document.write('ACADEMY'.indexOf('CAD')+'<br/>');
  document.write('ACADEMY'.indexOf('CaD')+'<br/>');
  //9-1]특정문자열의 인덱스값 알아내기2
  //    lastIndexOf("문자열"):반환값은 indexOf()와 동일
  document.write('<h2>number lastIndexOf(찾는 문자렬)</h2>');
  document.write('ACADEMY'.lastIndexOf('A')+'<br/>');
  document.write('ACADEMY'.lastIndexOf('a')+'<br/>');

 

 

 /*
  아래 이메일 주소에서 @와 .사이에 있는 값만 얻어 오자
  */
 var emails = ['kim@naver.com','park@cyworld.com','lee@nate.com'];
 //문]배열을 매개변수로 받아서 가운데 도메인만 얻어서
 //   출력하는 함수를 정의하고 함수를 호출하자.
 function print(emails){
  
   emails.forEach(function(item){
     document.write(item.substring(item.indexOf('@')+1,item.lastIndexOf('.'))+'<br/>');     
    });
 }

 print(emails);

 

 

//10]양쪽 공백제거:trim()
 console.log('X'+'    H  E L   L    O     '+'Y');
 console.log('X'+'    H  E L   L    O     '.trim()+'Y');