4. 글자 다루기 (문자열)
글자를 이어 붙이고, 세고, 자르고, 바꿔요.
이 장에서 배울 것
- 글자 이어 붙이기와 글자 수 세기
- 몇 번째 글자 꺼내기와 자르기
- 바꾸기, 쪼개기, 들어 있는지 확인하기
- 줄바꿈 같은 특수 문자 쓰기 (이스케이프)
큰따옴표로 감싼 글자를 문자열이라고 불러요. 이름, 문장, 메시지처럼 프로그램이 다루는 값의 상당수가 문자열이에요.
이어 붙이기
문자열끼리는 +로 이어 붙일 수 있어요. 이름표에 담긴 문자열 뒤에 붙일 때는 더하자를 써도 돼요.
'인사'를 "안녕" + "하세요"로 정하자
'인사'에 "!"를 더하자
'인사'를 출력하자
안녕하세요!가 나와요. 숫자를 붙이고 싶을 때는 <문자로>로 바꾸거나(2장), 처음부터 틀을 쓰면 편해요(1장).
'이름'을 "하리"로 정하자
'점수'를 95로 정하자
틀"{'이름'}의 점수는 {'점수'}점이에요."를 출력하자
글자 수 세기: '길이'
'이름표'의 '길이'로 글자가 몇 개인지 알 수 있어요. 띄어쓰기도 한 글자로 세고, 한글 한 글자도 한 글자예요.
'이름'을 "홍길동"으로 정하자
('이름'의 '길이')를 출력하자
("안녕 하리"의 '길이')를 출력하자
3과 5가 나와요.
몇 번째 글자 꺼내기
'이름표'의 N번째로 N번째 글자를 꺼내요. 첫 글자가 1번째예요.
'말'을 "하리언어"로 정하자
('말'의 1번째)를 출력하자
('말'의 4번째)를 출력하자
하와 어가 나와요. 0번째나 글자 수보다 큰 번째는 없는 위치라서 오류가 나요.
'말'을 "하리언어"로 정하자
('말'의 5번째)를 출력하자
“문자열의 길이를 벗어난 위치예요.” 라는 오류가 나요. 마지막 글자가 필요하면 ('말'의 '길이')번째처럼 길이를 써서 꺼내면 돼요.
'말'을 "하리언어"로 정하자
('말'의 ('말'의 '길이')번째)를 출력하자
문자열 도구 네 가지
문자열 뒤에 의 <도구>(…)를 붙여 쓰는 도구가 있어요.
| 도구 | 하는 일 | 예 | 결과 |
|---|---|---|---|
<자르기>(시작, 끝) |
시작번째부터 끝번째까지 (둘 다 포함) | "하리언어"의 <자르기>(1, 2) |
"하리" |
<바꾸기>(찾을것, 바꿀것) |
찾은 곳을 모두 바꿔요 | "사과 배 사과"의 <바꾸기>("사과", "귤") |
"귤 배 귤" |
<분리하기>(기준) |
기준 글자로 쪼개서 목록으로 | "사과,배"의 <분리하기>(",") |
[사과, 배] |
<포함확인>(찾을것) |
들어 있으면 참, 아니면 거짓 |
"하리언어"의 <포함확인>("언") |
참 |
'문장'을 "사과 배 사과"로 정하자
('문장'의 <자르기>(1, 2))를 출력하자
('문장'의 <바꾸기>("사과", "귤"))를 출력하자
('문장'의 <분리하기>(" "))를 출력하자
('문장'의 <포함확인>("배"))를 출력하자
<자르기>의 끝이 글자 수보다 크면 있는 데까지만 잘라요.<분리하기>의 결과는 목록이에요. 목록은 7장에서 자세히 배워요.<포함확인>의 결과참/거짓은 5장의 조건문과 함께 쓰면 좋아요.
이 도구들은 원래 문자열을 바꾸지 않고 새 문자열을 만들어 줘요. 결과를 계속 쓰려면 이름표에 담으세요.
'문장'을 "사과 배 사과"로 정하자
'문장'의 <바꾸기>("사과", "귤")를 실행하자
'문장'을 출력하자
'문장'을 '문장'의 <바꾸기>("사과", "귤")로 정하자
'문장'을 출력하자
첫 출력은 그대로 사과 배 사과, 두 번째 출력은 귤 배 귤이에요.
글자는 고쳐 쓸 수 없어요
문자열은 한 번 만들어지면 그 안의 글자를 하나만 바꿀 수 없어요.
'이름'을 "홍길동"으로 정하자
'이름'의 1번째를 "김"으로 정하자
바꾸고 싶다면 원하는 모양의 새 문자열을 만들어서 다시 담으세요.
'이름'을 "홍길동"으로 정하자
'이름'을 "김" + '이름'의 <자르기>(2, 3)로 정하자
'이름'을 출력하자
김길동이 나와요.
특수 문자: 이스케이프
문자열 안에서 줄을 바꾸거나 큰따옴표 자체를 쓰고 싶을 때는 역슬래시(\) 를 앞에 붙인 약속된 글자를 써요.
| 쓰는 법 | 뜻 |
|---|---|
\n |
줄바꿈 |
\t |
탭 (일정한 간격) |
\" |
큰따옴표 " 자체 |
\\ |
역슬래시 \ 자체 |
"첫째 줄\n둘째 줄"을 출력하자
"그가 \"안녕\"이라고 말했어요."를 출력하자
글자 비교하기
두 문자열이 같은지는 같다로 확인해요. 크다·작다로 비교하면 사전 순서(가나다·ABC 순)로 앞에 오는 쪽이 작아요.
("하리"와 "하리"가 같다)를 출력하자
("가"가 "나"보다 작다)를 출력하자
둘 다 참이 나와요. 비교는 5장의 조건문에서 많이 써요.
자주 하는 실수
1. 0번째부터 세기
다른 언어를 배운 적이 있으면 첫 글자를 0번째로 착각하기 쉬워요. 하리는 1번째부터 세요.
2. 도구의 결과를 담지 않기
'문장'의 <바꾸기>(…)는 새 문자열을 돌려줄 뿐이라, '문장'은 그대로예요. 바뀐 결과가 필요하면 정하자로 담으세요.
3. 숫자를 그냥 이어 붙이기
"점수: " + 90은 오류예요. 틀"점수: {90}"이나 "점수: " + <문자로>(90)을 쓰세요.
정리
| 하고 싶은 일 | 쓰는 법 |
|---|---|
| 이어 붙이기 | "안녕" + "하세요", '인사'에 "!"를 더하자 |
| 글자 수 | '말'의 '길이' |
| N번째 글자 | '말'의 1번째 (1부터 셈) |
| 일부 자르기 | '말'의 <자르기>(1, 2) |
| 바꾸기 | '말'의 <바꾸기>("가", "나") |
| 쪼개기 | '말'의 <분리하기>(",") → 목록 |
| 들어 있는지 | '말'의 <포함확인>("가") → 참/거짓 |
| 줄바꿈 | \n |
연습 문제
1. '이메일'에 "hari@example.com"을 담고, @ 앞부분(아이디)만 출력해 보세요. (힌트: <분리하기>)
(참고) 여기에 써 보세요.
정답 예시
'이메일'을 "hari@example.com"으로 정하자
'조각'을 '이메일'의 <분리하기>("@")로 정하자
('조각'의 1번째)를 출력하자
hari가 나와요.
2. 문장에서 "싫어"를 모두 "좋아"로 바꿔서 출력해 보세요.
'문장'을 "나는 당근이 싫어. 오이도 싫어."로 정하자
정답 예시
'문장'을 "나는 당근이 싫어. 오이도 싫어."로 정하자
'문장'을 '문장'의 <바꾸기>("싫어", "좋아")로 정하자
'문장'을 출력하자
3. 이름의 첫 글자와 마지막 글자를 틀로 출력해 보세요. 이름이 몇 글자든 동작해야 해요.
정답 예시
'이름'을 "남궁민수"로 정하자
'첫'을 '이름'의 1번째로 정하자
'끝'을 '이름'의 ('이름'의 '길이')번째로 정하자
틀"첫 글자: {'첫'}, 마지막 글자: {'끝'}"을 출력하자
다음 장에서는 상황에 따라 다른 일을 하게 만드는 조건문을 배워요.