{ }codelper

배우기 › C#

더 나아가기 · 19

문자열 다루기

자르기, 찾기, 바꾸기, 앞뒤 공백 다듬기, 비교, 자리 맞추기.

입력을 받으면 다듬고(앞뒤 공백 빼기), 필요한 부분을 찾아서 잘라 쓰고, 모양을 바꿔 출력하는 일이 많아요.
아래 예제는 그 도구들을 차례로 써 봐요.

using System; class Program{    static void Main()    {        string text = Console.ReadLine().Trim();        string date = Console.ReadLine().Trim();        string[] ab = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);        string n = Console.ReadLine().Trim();        Console.WriteLine($"[{text}]");        Console.WriteLine(text.Substring(0, 5));        int i = text.IndexOf("World", StringComparison.Ordinal);        Console.WriteLine(i);        Console.WriteLine(text.Substring(i, 5));        Console.WriteLine(text.IndexOf("Bye", StringComparison.Ordinal));        Console.WriteLine(date.Replace("-", "/"));        Console.WriteLine(Math.Sign(string.CompareOrdinal(ab[0], ab[1])));        Console.WriteLine(n.PadLeft(3, '0'));    }}
stdin
   Hello, World   
2026-11-10
pear apple
7
stdout
[Hello, World]
Hello
7
World
-1
2026/11/10
1
007

핵심

  • 다듬기는 앞뒤 공백을 빼요.
    읽은 줄은 다듬고 쓰는 게 안전해요.
  • 찾기는 처음 나오는 자리를 돌려줘요.
    없을 때는 대부분 -1이지만, 언어마다 달라요.
  • 자르기는 두 번째 숫자가 언어마다 달라요.
    끝 자리(그 자리는 빼고)인 언어와 글자 수인 언어가 있어요.
  • 바꾸기는 대부분 모두 바꾸지만, JavaScript replace는 처음 하나만 바꿔요.
  • 비교는 음수·0·양수를 돌려줘요.
    부호만 믿어요.
    값의 크기에는 뜻이 없어요.
  • 자리 맞추기는 7을 007처럼 앞을 채워 폭을 맞춰요.

언어별로 쓰는 법

Pythonstrip(), find(없으면 -1, index는 오류), t[7:12](끝 자리), replace(모두), rjust(3, "0")
JavaScripttrim(), indexOf, slice(7, 12)(끝 자리), replace는 처음 하나만·replaceAll은 모두, padStart(3, "0").
localeCompare는 언어 설정을 따라요
TypeScriptJavaScript와 같아요
Javastrip(), indexOf, substring(7, 12)(끝 자리), replace(모두, replaceAll은 정규식), compareTo(부호만 믿기)
C#Trim(), IndexOf, Substring(7, 5)(글자 수), Replace(모두), PadLeft(3, '0').
string.Compare와 IndexOf(string)는 문화권을 따르니, 글자 코드 그대로 보려면 StringComparison.Ordinal이나 string.CompareOrdinal
C++다듬기가 없어 직접 잘라요.
find(없으면 std::string::npos), substr(7, 5)(글자 수), compare.
모두 바꾸기는 반복으로.
자리 맞추기는 setw와 setfill
C다듬기·모두 바꾸기가 없어 직접 해요.
strstr(없으면 NULL), 자르기는 printf("%.5s", text + 7)(시작 주소와 글자 수), 비교는 strcmp, 자리 맞추기는 printf("%03d")
Craykon공백제거(), 자리찾기(없으면 -1), 부분문자열(7, 5)(글자 수), 바꾸기(모두), 앞채우기(3, "0")

자주 하는 실수

자르기의 두 번째 숫자를 헷갈렸어요C# · Java · JavaScript

"Hello, World".Substring(7, 12)  // C#
"Hello, World".substring(7, 5)   // Java, JavaScript

→ C#은 범위 오류, Java도 오류. JavaScript는 두 수를 슬쩍 바꿔서 ", "를 돌려줘요

그 언어에서 두 번째 숫자가 끝 자리인지 글자 수인지 먼저 확인해요.

compareTo가 1을 돌려줄 줄 알았어요Java · C · C++ · C#

System.out.println("pear".compareTo("apple"));

→ 15 — 'p' - 'a'예요

> 0, < 0처럼 부호만 봐요.

replace가 모두 바꿀 줄 알았어요JavaScript · TypeScript

console.log("2026-11-10".replace("-", "/"));

→ 2026/11-10 — 처음 하나만 바뀌어요

모두 바꾸려면 replaceAll.
Java replaceAll은 정규식이라 "a.b".replaceAll(".", "-")가 "---"인 점도 조심해요.

언어마다 다른 점
Windows에서 만든 입력은 줄 끝이 \r\n이에요.
Java nextLine()·C# ReadLine()·크레이콘 줄읽기()는 \r까지 떼지만, Python input()(리눅스·macOS)·JavaScript split("\n")·C fgets·C++ getline은 남겨서 "World\r" == "World"가 거짓이 되니, 읽은 줄은 다듬고 쓰세요.

연습 문제