10. 표준 라이브러리 (도구 상자)
JSON, 무작위, 날짜, 정규식처럼 바로 꺼내 쓰는 도구들을 알아봐요.
하자에는 자주 쓰는 도구를 모아 둔 표준 라이브러리가 들어 있어요. 임포트 없이 쓰는 것은 출력하자 같은 문법과 <숫자로>() 같은 형변환뿐이고, 나머지 도구는 [모듈]에서 <도구>를 가져오자로 필요한 것만 꺼내 써요. 도구를 하나씩 가져와도 되고, 여러 개를 와/과로 이어 한 번에 가져와도 되고, 모듈에 있는 것을 전부 가져올 수도 있어요. 이름이 겹치면 도구 하나에 한해 <도구>를 <새이름>으로 가져오자처럼 별칭을 붙일 수 있어요.
| 모듈 | 하는 일 | 도구 |
|---|---|---|
[수학] |
올림과 버림 (더 많은 계산은 11장) | <올림> <버림> |
[JSON] |
JSON 글자와 값 바꾸기 | <파싱> <문자열화> |
[무작위] |
무작위 값 뽑기 | <실수> <정수> <고르기> <섞기> |
[날짜] |
시각 다루기 | <지금> <서식> <읽기> <요일> <기다리기> |
[정규식] |
글자 패턴 찾기 | <검사> <찾기> <그룹> <모두찾기> <치환> <분할> |
[수학]에서 <올림>을 가져오자
[수학]에서 <올림>과 <버림>을 가져오자
[수학]에서 <올림>을 <반올림>으로 가져오자
[수학]에서 전부 가져오자
<반올림>(3.2)를 출력하자
<올림>(3.2)를 출력하자
<버림>(3.8)을 출력하자
전부는 그 모듈이 가진 도구를 모두 가져와요. 다만 다른 모듈에서 같은 이름의 도구를 가져오면 나중 것이 앞의 것을 덮어쓰니, 이름이 겹칠 수 있을 때는 필요한 것만 골라 가져오세요.
JSON
<파싱>은 JSON 글자를 하리의 값으로 바꿔요. 객체는 사전, 배열은 목록, null은 비어있음이 돼요. 반대로 <문자열화>는 값을 JSON 글자로 만들어요. 사전의 키는 문자열이어야 하고, 글자 순서대로 정렬돼요. 두 번째 인자로 들여쓰기 칸 수를 주면 보기 좋게 펼쳐져요.
[JSON]에서 <파싱>을 가져오자
[JSON]에서 <문자열화>를 가져오자
'글'을 "{\"이름\": \"하나\", \"점수\": [90, 80]}"으로 정하자
'값'을 <파싱>('글')로 정하자
'값'의 "이름"을 출력하자
'사전'을 {"b": 2, "a": 참}으로 정하자
<문자열화>('사전')을 출력하자
<문자열화>('사전', 2)를 출력하자
무작위
<실수>()는 0 이상 1 미만의 수, <정수>(작은수, 큰수)는 두 수 사이(양 끝 포함)의 정수를 돌려줘요. <고르기>는 목록에서 하나를 뽑고, <섞기>는 섞은 새 목록을 돌려줘요(원래 목록은 그대로예요). 실행할 때마다 결과가 달라요.
[무작위]에서 <정수>를 가져오자
[무작위]에서 <고르기>를 가져오자
[무작위]에서 <섞기>를 가져오자
'주사위'를 <정수>(1, 6)으로 정하자
틀"주사위는 {'주사위'}이(가) 나왔어요."를 출력하자
'메뉴'를 ["김밥", "라면", "우동"]으로 정하자
틀"오늘은 {<고르기>('메뉴')}!"를 출력하자
<섞기>('메뉴')를 출력하자
날짜
시각은 1970년 1월 1일부터 흐른 초(숫자)로 다뤄요. <지금>()이 지금 시각을 주고, <서식>(시각, 서식)은 글자로, <읽기>(글, 서식)는 다시 시각으로 바꿔요. 서식에서 YYYY(연), MM(월), DD(일), HH(시), mm(분), ss(초)만 자리가 바뀌고 나머지 글자는 그대로예요. 컴퓨터에 설정된 시간대를 써요. <요일>(시각)은 요일을 월요일 1부터 일요일 7까지의 숫자로 알려줘요. 2월 30일처럼 없는 날짜를 읽으면 에러가 나요. <기다리기>(초)는 그 시간만큼 프로그램을 멈추고 기다려요(0초부터 3600초까지, 소수도 돼요). 브라우저 플레이그라운드에서도 화면이 굳지 않고 기다려요.
[날짜]에서 <지금>을 가져오자
[날짜]에서 <서식>을 가져오자
[날짜]에서 <읽기>를 가져오자
'시각'을 <읽기>("2024-03-05 07:08:09", "YYYY-MM-DD HH:mm:ss")로 정하자
<서식>('시각', "YYYY년 MM월 DD일")을 출력하자
'방금'을 <지금>()으로 정하자
틀"지금은 {<서식>('방금', "HH:mm:ss")}이에요."를 출력하자
<기다리기>로 천천히 세어 볼 수도 있어요.
[날짜]에서 <기다리기>를 가져오자
"3"을 출력하자
<기다리기>(0.3)을 실행하자
"2"를 출력하자
<기다리기>(0.3)을 실행하자
"1"을 출력하자
<기다리기>(0.3)을 실행하자
"발사!"를 출력하자
정규식
글자에서 패턴을 찾을 때는 정규식을 써요. 도구는 모두 (글, 패턴)을 먼저 받아요.
<검사>: 패턴이 있는지참/거짓으로 알려줘요.<찾기>: 처음 맞는 글자를 돌려줘요. 없으면비어있음이에요.<그룹>: 처음 맞는 글자와( )로 묶은 부분을 목록으로 돌려줘요.<모두찾기>: 맞는 글자를 전부 목록으로 돌려줘요.<치환>: 맞는 곳을 다른 글자로 바꿔요. 바꿀 글자 안의$1,$2는 묶은 부분이고$$는 달러 기호예요.<분할>: 맞는 곳을 기준으로 잘라서 목록으로 돌려줘요.
[정규식]에서 <검사>를 가져오자
[정규식]에서 <모두찾기>를 가져오자
[정규식]에서 <그룹>을 가져오자
[정규식]에서 <치환>을 가져오자
[정규식]에서 <분할>을 가져오자
<검사>("abc123", "[0-9]+")를 출력하자
<모두찾기>("a1b22c333", "[0-9]+")를 출력하자
<그룹>("2024-03-05", "([0-9]+)-([0-9]+)-([0-9]+)")를 출력하자
<치환>("홍길동 김철수", "([^ ]+) ([^ ]+)", "$2 $1")을 출력하자
<분할>("사과, 배,귤", ", ?")를 출력하자
정규식은 Go와 자바스크립트가 함께 쓰는 문법만 쓸 수 있어요. 글자 안의 빈 곳에서 맞는 경우(빈 글자와 맞는 패턴)는 <모두찾기>, <치환>, <분할>에서 무시해요. 맨 앞에 (?i)(대소문자 무시), (?m), (?s)를 붙여 옵션을 줄 수 있어요.
함께 써보기: 월요일 놀리기
여러 모듈을 한꺼번에 가져오면 이런 것도 만들 수 있어요. <요일>(시각)은 월요일이 1, 일요일이 7인 숫자를 돌려줘요. 내일이 월요일이라면 [JSON]으로 읽어 둔 놀림말 중 하나를 [무작위]로 골라서 들려줘요.
[날짜]에서 <지금>을 가져오자
[날짜]에서 <요일>을 가져오자
[무작위]에서 <고르기>를 가져오자
[JSON]에서 <파싱>을 가져오자
'놀림말'을 <파싱>("[\"내일 월요일이래요... 주말은 이미 전설이 됐어요.\", \"월요일이 다가와요! 알람 소리 미리 듣고 가세요.\", \"내일은 월요일! 이불 밖은 위험해요.\"]")로 정하자
'내일'을 (<지금>() + 86400)으로 정하자
'요일번호'를 <요일>('내일')로 정하자
만약 ('요일번호'가 1과 같다) 라면:
<고르기>('놀림말')을 출력하자
그렇지 않다면:
"내일은 월요일이 아니에요. 오늘은 놀릴 거리가 없네요."를 출력하자