데이터 · 09
문자열
문자열의 길이, 대문자, 뒤집기, 한 글자 꺼내기.
문자열은 글자들이 줄 선 거예요.
아래 예제는 낱말 하나를 읽어서 길이, 대문자, 뒤집은 문자열, 첫 글자를 차례로 찍어요.
s = input()print(len(s))print(s.upper())print(s[::-1])print(s[0])const s = require("fs").readFileSync(0, "utf8").trim();console.log(s.length);console.log(s.toUpperCase());console.log([...s].reverse().join(""));console.log(s[0]);import { readFileSync } from "node:fs";const s: string = readFileSync(0, "utf8").trim();console.log(s.length);console.log(s.toUpperCase());console.log([...s].reverse().join(""));console.log(s[0]);import java.util.Scanner; public class Main { public static void main(String[] args) { String s = new Scanner(System.in).nextLine().trim(); System.out.println(s.length()); System.out.println(s.toUpperCase()); System.out.println(new StringBuilder(s).reverse()); System.out.println(s.charAt(0)); }}using System; class Program{ static void Main() { string s = Console.ReadLine().Trim(); Console.WriteLine(s.Length); Console.WriteLine(s.ToUpper()); char[] r = s.ToCharArray(); Array.Reverse(r); Console.WriteLine(new string(r)); Console.WriteLine(s[0]); }}#include <cctype>#include <iostream>#include <string> int main() { std::string s; std::cin >> s; std::cout << s.size() << '\n'; std::string up = s; for (char& c : up) c = std::toupper(static_cast<unsigned char>(c)); std::cout << up << '\n'; std::cout << std::string(s.rbegin(), s.rend()) << '\n'; std::cout << s[0] << '\n';}#include <ctype.h>#include <stdio.h>#include <string.h> int main(void) { char s[101]; scanf("%100s", s); int n = strlen(s); printf("%d\n", n); for (int i = 0; i < n; i++) putchar(toupper((unsigned char)s[i])); putchar('\n'); for (int i = n - 1; i >= 0; i--) putchar(s[i]); putchar('\n'); printf("%c\n", s[0]); return 0;}s = 콘솔.줄읽기();콘솔.쓰기(s.길이);콘솔.쓰기(s.대문자로변환());콘솔.쓰기(s.뒤집기());콘솔.쓰기(s[0]);hello
5 HELLO olleh h
핵심
- 번호는 0부터 시작해요.
첫 글자는s[0], 마지막 글자는길이 - 1번이에요. - 길이·대문자·뒤집기·나누기·앞뒤 빈칸 없애기 같은 도구는 어느 언어에나 있고, 이름만 달라요.
- 잘라 내기는 두 편으로 갈려요.
끝 번호를 주는 언어에서"abcdef"의(1, 3)은"bc", 개수를 주는 언어에서는"bcd"예요. - 글자는 속으로는 수(문자 코드)예요:
A는 65,a는 97.
C·C++·Java·C#의char는 그대로 수라서'A' + 1이66이에요. - C·C++ 말고는 문자열을 고칠 수 없어요.
바꾸려면 새 문자열을 만들어요.
언어별로 쓰는 법
| Python | 길이 len(s), 대문자 s.upper(), 뒤집기 s[::-1], 나누기 s.split(), 빈칸 없애기 s.strip(), 수로 int(s), 자르기 s[1:3](끝 번호), 코드 ord("A") → 65, chr(97) → "a" |
|---|---|
| JavaScript | 길이 s.length, 대문자 s.toUpperCase(), 뒤집기 [...s].reverse().join("")(문자열에는 reverse가 없어요), s.split(" "), s.trim(), 자르기 s.slice(1, 3)(끝 번호), 코드 s.charCodeAt(0), String.fromCharCode(97) |
| TypeScript | JavaScript와 같아요 |
| Java | 길이 s.length(), 한 글자는 s.charAt(i)(s[i]가 아니에요), 대문자 s.toUpperCase(), 뒤집기 new StringBuilder(s).reverse(), s.split(" "), s.trim(), 자르기 s.substring(1, 3)(끝 번호) |
| C# | 길이 s.Length, 대문자 s.ToUpper(), 뒤집기는 ToCharArray()로 만든 배열을 Array.Reverse, s.Split(' '), s.Trim(), 자르기 s.Substring(1, 3)(개수).코드를 글자로 되돌리려면 (char) |
| C++ | 길이 s.size()(또는 s.length()), 대문자는 toupper로 한 글자씩, 뒤집기 std::string(s.rbegin(), s.rend()), 자르기 s.substr(1, 3)(개수) |
| C | 길이 strlen(s) — 끝의 \0이 나올 때까지 셀 때마다 훑어요.대문자는 toupper로 한 글자씩, 뒤집기는 끝에서부터 한 글자씩 |
| Craykon | 길이 s.길이, 대문자 s.대문자로변환()(소문자 소문자로변환), 뒤집기 s.뒤집기(), s.나누기(" "), s.공백제거(), 수로 s.수로변환(), 자르기 s.부분문자열(1, 3)(개수), 코드 글자.코드("A"), 글자.글자로변환(97) |
자주 하는 실수
문자열의 한 글자를 바꿨어요Python · JavaScript · TypeScript · Craykon
s = "abc"
s[0] = "x"→ Python은 TypeError, JavaScript는 오류 없이 무시, TypeScript는 컴파일 오류, 크레이콘은 "문자열은 한 글자씩 바꿀 수 없어요" 오류
새 문자열을 만들어요.
예: Python "x" + s[1:].
한글 길이를 바이트로 셌어요C · C++
strlen("한글")→ 2가 아니라 6 — 바이트 수를 세요. UTF-8에서 한글 한 글자는 3바이트예요(C++ std::string("한글").size()도 6)
C·C++에서는 바이트 수와 글자 수가 다르다는 걸 기억해요.
Python·Java·C#·JavaScript·크레이콘은 2예요.
언어마다 다른 점
문자열이 같은지 볼 때 Java는
C도
문자열이 같은지 볼 때 Java는
==가 아니라 s.equals("yes")를 써요(==는 같은 객체인지를 봐서, 입력으로 받은 yes와 비교하면 false).C도
==는 주소 비교라 strcmp(a, b) == 0을 쓰고, Python·JavaScript·C#·C++(std::string)·크레이콘은 ==로 내용을 비교해요.