웹 기초 15강 - 자바 스크립트 객체(String)

Whatever·2021년 11월 17일
0

웹 기초

목록 보기
15/32

Date객체

date객체.getTime() => date객체의 시간을 milisecond단위로 반환
date객체.toLocaleDateString() => 연.월.일을 반환

– 요일 – getDay()-> 0~6
– 배열, getDay()

test_date3 – 날짜수 계산 - getTime()
=> time에서 일 구하기 -> /1000/60/60/24/365

test_date4- 500일 후 계산
getTime에의해 현재의 milisec를 구한다
500일 의 milisec를 구한다 //milisec의 값을 구할때는
//곱하기-> (1000606024500)
현재의 milisec와 500일 의 milisec를 더한다
더한 값으로 새로운 time를 설정 후 년 월 일 을 구한다

경과시간 구하기
100일 후의 날짜 구하기
getTime() -리턴값은 millisec이다

1일의 millisec -> 1000 60 60 * 24

a = 현재의 millisec + 100일 후의 millisec
new Date(a)

String 객체
속성
length : 문자열의 길이.
메소드 str = “I Love Korea ”;

메서드 설명
charAt(index) index 위치의 문자를 구한다. index가 문자열의 범위를 벗어나면 빈 문자열이 리턴된다.
charCodeAt(index) index 위치의 문자에 대한 유니코드를 구한다.
indexOf(searchvalue, start) 부분 문자열의 위치를 검색한다. start는 검색 시작 위치이며 생략시 0이 적용되어 처음부터 검색한다. 없을 경우 -1을 리턴한다.
lastIndexOf(searchvalue, start) 부분 문자열의 위치를 역방향에서 검색한다. start는 검색 시작 위치이며 생략 시 문자열의 제일 끝이 적용된다. 없을 경우 -1을 리턴한다.
concat(s1, s2, …) 여러 개의 문자열을 연결한다. + 연산자와 동일하다.
trim() 앞 뒤의 공백을 제거한다.
toLowerCase() 소문자로 변환한다
toUpperCase() 대문자로 변환한다
replace(search,value) 문자열을 대체한다. 정규식도 사용 가능
search(searchvalue) 부분 문자열 또는 정규식을 검색하여 그 위치를 리턴한다.
match(regexp) 정규식으로 검색하여 일치하는 결과를 배열로 리턴한다. 발견되지 않으면 null을 리턴한다.
substring(from, to) 두 위치 사이의 부분 문자열을 추출한다. to를 생략하면 뒤쪽 모든 문자열을 추출한다.
slice(start, end) start 위치에서 end 위치까지 부분 문자열을 추출한다. 음수로 끝에서부터 위치를 지정할 수 있다.
substr(start, length) start에서 시작하여 length 길이만큼 부분 문자열을 추출한다. 길이를 생략하면 뒤쪽 모든 문자열을 추출한다.
split(separator, limit) 구분자로 구분된 문자열을 분리하여 배열로 리턴한다. limit는 최대 몇 개까지 리턴할 것인가를 지정한다.

정규식 => //g
여기서 g는 모든 것이라는 뜻
/korea/gi => 대소문자 무시(ignore)

Date객체 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">

<script>
today = new Date();

function proc1(){
	bir = new Date(1994, 11-1, 29);
	//bir = new Date("2010.11.29");
	
	ttime = today.getTime(); //date객체.getTime() => date객체의 날짜를 millisecond 단위로 반환
	btime = bir.getTime();
	console.log(ttime, btime);
	
	times = ttime - btime;
	
	res = times / 1000 /60 /60 /24 /365; //일 수 
	console.log(res);
	
	str = "오늘 : " + today.toLocaleDateString() + "<br>";
	str += "태어난 날: " + bir.toLocaleDateString() + "<br>";
	str += parseInt(Math.ceil(res)) + " 경과하였습니다";
	
	document.querySelector('#result1').innerHTML = str;
}

function proc2(){
	tomilli = today.getTime(); //오늘 날짜의 millisecond 반환
	milli100 = 1000 * 60 * 60 * 24 * 100; //1000분의 1초 * 60(초) * 60(분) * 24(시간) * 100(일)
	
	millisum = tomilli + milli100;
	
	after100 = new Date(millisum);
	
	after100.toLocaleString() //날짜와 시간 출력
	res = after100.toLocaleDateString() //날짜만 출력
	
	str = "오늘 : " + today.toLocaleDateString() + "<br>";
	str += "100일 후 : " + after100.toLocaleDateString() + "<br>";
	
	document.querySelector('#result2').innerHTML = str;
	
	
}

function proc3(){
	//1. id=pdate인 요소의 선택한 값을 가져온다 - value - "2020.11.4" - String이다
	datevalue = document.getElementById('pdate').value;
	
	
	//2. 1번의 value값으로 Date객체를 생성
	theday = new Date(datevalue);
	
	//경과시간
	//3. 오늘  - 2번의 getTime() -> 결과 값은 millisec
	times = today.getTime() - theday.getTime();
	console.log("times=" + times);
	if(times < 0) {
		alert("선택오류입니다.");
		return false;
	}
	
	
	//4. 경과한 날 수를 구한다
	days = times / 1000 /60 /60 /24;
	console.log("days=" + days);
	
	
	//5. 4번의 결과값을 비교
	if(days > 7){
		res = "교환 불가능"
	}else{
		res = "교환 가능"
	}
	//5. 4번의 결과를 result3에 출력한다. - toLocaleDateString()
	//오늘날짜
	str = "오늘 날짜 : " + today.toLocaleDateString() + "<br>";
	str += "구입 날짜 : " + theday.toLocaleDateString() + "<br>";
	str += res;
	document.getElementById('result3').innerHTML = str;
	
}
function proc4(){
	christmas = new Date(2021, 12-1, 25);

	//christmas millisec - 오늘의 millisec
	times = christmas.getTime() - today.getTime();
	
	//날 수 구하기
	res = parseInt(times / 1000 /60 /60 /24); 
	
	str = "크리스마스까지  " + res + "일 남았습니다."
	document.getElementById('result4').innerHTML = str;
}

</script>
</head>
<body>

<div class="box">
 경과시간 구하기<br>
 getTime()  -리턴값은 millisec이다<br>
 millisec를 1000으로 나누면 실제 초를 구할 수 있다<br>
 
 태어난 날로부터 현재까지 일 또는 년수 구하기
 <br>
  <button type="button" onclick="proc1()">확인</button>
  <div id="result1"></div>
 </div> 
 
 <div class="box">
 경과시간 구하기
 100일 후의 날짜 구하기<br>
 getTime()  -리턴값은 millisec이다<br>
 1일의 millisec -> 1000 * 60 * 60 * 24<br>
 a = 현재의 millisec + 100일 후의 millisec
 new Date(a)
 <br>
  <button type="button" onclick="proc2()">확인</button>
  <div id="result2"></div>
 </div> 
 
 <div class="box">
 경과시간 구하기<br>
 선택한 날로부터 경과한 날 수 구하기<br>
 getTime()  -리턴값은 millisec이다<br>
 
 7일 이상이면 교환반품 불가능 아니면 가능<br>
 <br>
 <input type="date" id="pdate"><br>
  <button type="button" onclick="proc3()">확인</button>
  <div id="result3"></div>
 </div> 
 
 <div class="box">
 경과시간 구하기<br>
 크리스마스까지 남은 일수 구하기<br>
 getTime()  -리턴값은 millisec이다<br>

 christmas millisec - 오늘의 millisec<br>
 <br>
  <button type="button" onclick="proc4()">확인</button>
  <div id="result4"></div>
 </div> 
 
</body>
</html>

String 메소드

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script type="text/javascript">
str = "korea 우리 나라 좋은 나라 대한 민국 Korea";

function proc1(){
	a = str.charAt(6);
	codea = str.charCodeAt(6);
	
	res = str + "<br>";
	res += "str.charAt(6) : " + a + "<br>";
	res += "str.charCodeAt(6) : " + codea;
	
	document.getElementById('result1').innerHTML = res;
}

function proc2(){
	subs = str.substring(3, 7); //3 ~ 7사이
	slic = str.slice(3, 7);     //3 ~ 7사이
	sublen = str.substr(3, 7);  //3부터 7개글자를 추출
	
	res = res = str + "<br>";
	res += "str.substring(3, 7) : " + subs + "<br>";
	res += "str.slice(3, 7) : " + slic + "<br>";
	res += "str.substr(3, 7) : " + sublen + "<br>";
	
	document.getElementById('result2').innerHTML = res;
	
}

function proc3(){
	arr = str.split(" ");
	
	document.getElementById('result3').innerHTML = arr;
	
}

function proc4(){
	
	area = document.getElementsByTagName('textarea')[0].value;
	//area = document.querySelector('textarea').value;
	
	reparea = area.replace(/\r/g, "").replace(/\n/g, "<br>");
	
	aa = str.replace(/korea/gi,'코리아')
	alert(aa);
	
	document.getElementById('result4').innerHTML = reparea;
	
}

function proc5(){
	//input = prompt("찾는 문자열을 입력하세요");
	
	value1 = str.match(/korea/gi);
	console.log(value1);
	
	value2 = str.match(/good/gi);
	console.log(value2);
	
	str = "str.match(/korea/gi) <br>";
	str += "배열을 리턴 : " + value1 + "<br>";
	
	str += "str.match(/good/gi) <br>";
	str += "값이 없을 때 : " + value2;
	
	
	document.getElementById('result5').innerHTML = str;
	
	
}
</script>
</head>
<body>

<div class="box">
 charAt(index) : 지정된 index 위치의 문자를 리턴한다<br>
 charCodeAt(index) : 지정된 index 위치의 문자 코드를 리턴한다	 
 <br>
  <button type="button" onclick="proc1()">확인</button>
  <div id="result1"></div>
 </div> 
 
 <div class="box">
 문자열 추출<br>
 substring(start, end) : start~end 사이의 문자열 추출<br>
 slice(start, end) : start~end 사이의 문자열 추출<br>
 substr(start, length) : start부터 length의 갯수만큼 추출<br>	 
 <br>
  <button type="button" onclick="proc2()">확인</button>
  <div id="result2"></div>
 </div> 
 
 <div class="box">
 문자열 분리<br>
 split(구분자, 갯수) : 구분자를 기준으로 문자열을 분리하여 배열로 생성되어 저장한다<br>
 갯수는 생략가능, 생략시 전체를 대상으로 한다<br>	 
 <br>
  <button type="button" onclick="proc3()">확인</button>
  <div id="result3"></div>
 </div> 
 
 <div class="box">
 문자열 대체 - 수정<br>
 replace(oldvalue, newvalue) : oldvalue를 newvalue로 변경한다<br>
 textarea에 여러 줄로 입력된 문자를 script로 보낸다 - value<br>
 id = result4인 요소에 출력한다<br>
 입력 시\r\n을 &lt;br>태그로 변경하여 출력한다<br>
 <br>
 <textarea rows="5" cols="50"></textarea>
  <button type="button" onclick="proc4()">확인</button>
  <div id="result4"></div>
 </div> 
 
 <div class="box">
 문자열 검색<br>
 match(value) : value를 검색한다<br>
 검색된 문자열을 배열로 리턴하고 검색 문자가 없으면 null을 리턴한다<br>
 
 <br>
  <button type="button" onclick="proc5()">확인</button>
  <div id="result5"></div>
 </div> 
 
 
</body>
</html>

String 문제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">

<script type="text/javascript">
function proc1(){
	
	//주민번호 입력받기
	code = prompt("주민번호 입력", "-빼고 입력");
	
	//생년월일과 성별을 출력 123456-1234567 ,length = 13자리 / index = 12까지
	year2 = code.substr(0,2);
	month = code.substr(2,2);
	day = code.substr(4,2);
	
	gennum = parseInt(code.substr(6,1));
	gender = "";
	
	year1 = 0;
	switch(gennum){
	case 1: 
		year1 = 19;
		gender = "남성";
		break;
	case 2:	
		year1 = 19;
		gender = "여성";
		break;
	case 3:
		year1 = 20;
		gender = "남성";
		break;
	case 4:	
		year1 = 20;
		gender = "여성";
		break;
	
	}
	console.log(year1);
	
	fullyear = year1 + year2;
	
	now = new Date();
	age = now.getFullYear() - fullyear;
	
	res = "생일 : " + fullyear + "년 " + month + "월 " + day + "일 <br>";
	res += "성별 : " + gender + "<br>";
	res += "나이 : " + age; 
	
	document.getElementById('result1').innerHTML = res;
	
}

function proc2(){
	//str = "234567892345"
	//str.length = 12
	
	//입력 - 1103264123456
	code = prompt("주민번호 입력", "-빼고 입력");
	//code.length = 13 index : 0~12
	
	sum = 0;
	
	//한자리씩 추출 0~11
	for(i=0; i < code.length - 1; i++){
		//sum += code.substr(i,1) * str.substr(i,1);
		sum += code.substr(i) * (i % 8 + 2)
	}
	
	res = 11 - sum % 11; //0~11
	res = res % 10;
	if(res == 10)res = 0;
	else if(res == 11)res = 1;
	
	//마지막인덱스의 숫자와 res가 같으면 ok
	if(res == code.substr(code.length-1,1)){
		alert("유효한 번호")
	}else{
		alert("틀린 번호")
	}
	
}

</script>
</head>
<body>

<div class="box">
 주민등록번호를 입력 받아 <br>
 생년월일과 성별을 출력하는 프로그램을 작성하시오.<br>
(입력은 prompt로 입력받는다.)<br>
예) 주민등록번호를 110326-4432618로 입력 받은 경우<br>
생일 : 2011년 3월 26일<br>
성별 : 여자 <br>
나이: <br>
 
 <br>
  <button type="button" onclick="proc1()">확인</button>
  <div id="result1"></div>
 </div> 
 
 <div class="box">
 주민등록번호를 입력 받아 -없이 입력 1103264432618 <br>
 주민등록번호의 유효성을 검사하는 프로그램을 작성하시오.(ABCDEF-GHIJKLM)<br>
A*2 + B*3 + ... + H*9 + I*2 + ... + L*5 의 총합을 구한다.<br>

1번의 합을 11로 나눈 나머지를 구한다.<br>
11에서 2번의 결과를 뺀다.<br>
3번의 결과가 0~9이면 값 그대로, 10이면 0, 11이면 1로 변환<br>
4번의 결과와 M자리의 값이 같으면 맞는 번호이다.<br>
 
 <br>
  <button type="button" onclick="proc2()">확인</button>
  <div id="result2"></div>
 </div> 
 
 
</body>
</html>

0개의 댓글