2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

C#의 String.Replace() 메서드는 어떻게 사용하나요?

_____
다음은 C 의 String.Replace() 메서드 사용법을 정리한 FAQ입니다.

Q1. String.Replace() 메서드란 무엇인가요?
A1. String.Replace()는 문자열 내에서 지정한 문자열(또는 문자)을 찾아 다른 문자열(또는 문자)로 바꾼 새로운 문자열을 반환하는 메서드입니다. 원본 문자열은 변경되지 않고, 변경된 결과가 담긴 새 문자열이 만들어집니다.

Q2. 주요 오버로드(Overload)는 어떤 것이 있나요?
A2.
1) Replace(Char oldChar, Char newChar)
2) Replace(String oldValue, String newValue)

Q3. 기본 사용 예시는 어떻게 되나요?
A3.
- Replace(Char, Char) 예:
string s = "hello";
string result = s.Replace('l', 'r'); // "herro"
- Replace(String, String) 예:
string s2 = "2023-01-01";
string result2 = s2.Replace("-", "/"); // "2023/01/01"

Q4. 원본 문자열이 변경되나요?
A4. 변경되지 않습니다. C 문자열은 불변(immutable)이므로 Replace() 호출 시 항상 새 문자열이 생성됩니다.

Q5. 대소문자 구분은 어떻게 하나요?
A5. 기본 Replace()는 대소문자를 구분합니다. “Hello”.Replace("h","J")는 변경되지 않고 “Hello”가 그대로 반환됩니다.
대소문자를 무시하려면 정규표현식(Regex.Replace)이나 ToLower()/ToUpper() 후 Replace()를 조합해야 합니다.

Q6. oldValue가 빈 문자열("")이면 어떻게 되나요?
A6. String.Replace("", "X")는 경고 없이 문자열의 모든 경계(문자 사이, 앞뒤)마다 "X"를 삽입합니다. “ABC” → “XAXBXCX”. 의도치 않은 결과를 낼 수 있으니 주의하세요.

Q7. oldValue 또는 newValue에 null을 넘기면?
A7. ArgumentNullException이 발생합니다. 두 매개변수 모두 null이 될 수 없습니다.

Q8. 여러 번 연속으로 치환하려면?
A8. Replace()를 이어서 호출하거나, StringBuilder.Replace()를 사용할 수 있습니다.
예) s.Replace("A","B").Replace("B","C");
대상 문자열이 크거나 치환 작업이 많다면 StringBuilder.Replace()가 성능상 유리합니다.

Q9. Regex.Replace와의 차이는?
A9.
- String.Replace: 단순 문자/문자열 치환, 대소문자 구분.
- Regex.Replace: 정규표현식 기반, 패턴 매칭, 대소문자 옵션, 복잡한 치환 가능.
단순 치환이라면 String.Replace가 더 간단하고 빠릅니다.

Q10. 문화권(Culture)에 따른 차이가 있나요?
A10. String.Replace 자체는 문화권 설정을 따르지 않습니다. 내부적으로 인덱스 기반 치환을 수행하므로 CultureInfo 영향을 받지 않습니다.

Q11. 성능 이슈는 어떻게 관리하나요?
A11.
- 작은 문자열·적은 치환 횟수: 무난히 사용 가능.
- 큰 문자열·반복 치환: StringBuilder.Replace() 또는 Regex 활용 고려.
- 메모리·GC 부담 경감 위해 StringBuilder 재사용 또는 Span 기반 처리도 검토하세요.

Q12. 유니코드·다국어 문자열에도 사용 가능한가요?
A12. 가능합니다. String.Replace는 .NET 문자열(UTF-16) 기반이므로 한글, 이모지, 특수문자 등에도 정상 작동합니다. 다만 UTF-16 surrogate pair 단위 치환 시 주의가 필요할 수 있습니다.

– 이상으로 String.Replace()의 주요 사용법, 옵션, 주의사항을 FAQ 형식으로 정리했습니다.
C 의 `String.Replace()` 메서드는 문자열 내에서 특정 문자열을 다른 문자열로 대체하는 데 사용됩니다.

이 메서드는 매우 유용하며, 텍스트 처리, 데이터 변환, 사용자 입력 검증 등 다양한 상황에서 활용될 수 있습니다.

아래에서는 `String.Replace()` 메서드의 사용법, 예제, 그리고 주의할 점에 대해 자세히 설명하겠습니다.

기본 사용법 `String.Replace()` 메서드는 두 가지 매개변수를 받습니다: 1. oldValue : 대체할 문자열입니다.

이 문자열이 원본 문자열 내에서 찾아져서 대체됩니다.



2. newValue : 대체할 새로운 문자열입니다.

`oldValue`가 발견될 때마다 이 문자열로 대체됩니다.

메서드의 기본 구문은 다음과 같습니다: ```csharp public string Replace(string oldValue, string newValue); ``` 반환 값 `String.Replace()` 메서드는 대체 작업이 완료된 새로운 문자열을 반환합니다.

원본 문자열은 변경되지 않으며, 문자열은 불변(immutable) 특성을 가지고 있습니다.

예제 다음은 `String.Replace()` 메서드의 간단한 사용 예제입니다.

```csharp using System; class Program { static void Main() { string originalString = "Hello, World!"; string modifiedString = originalString.Replace("World", "C "); Console.WriteLine("Original String: " + originalString); Console.WriteLine("Modified String: " + modifiedString); } } ``` 위의 예제에서 `"World"`라는 문자열이 `"C "`로 대체됩니다.

출력 결과는 다음과 같습니다: ``` Original String: Hello, World! Modified String: Hello, C ! ``` 대소문자 구분 `String.Replace()` 메서드는 대소문자를 구분합니다.

즉, `"world"`와 `"World"`는 서로 다른 문자열로 간주됩니다.

따라서 대소문자를 무시하고 대체하려면, 먼저 문자열을 소문자 또는 대문자로 변환한 후에 대체 작업을 수행해야 합니다.

```csharp string originalString = "Hello, World!"; string modifiedString = originalString.Replace("world", "C "); // 대체되지 않음 ``` 여러 번 대체하기 `String.Replace()` 메서드는 문자열 내에서 `oldValue`가 여러 번 발견될 경우, 모든 인스턴스를 대체합니다.

예를 들어: ```csharp string originalString = "banana"; string modifiedString = originalString.Replace("a", "o"); Console.WriteLine(modifiedString); // "bonono" ``` 위의 예제에서 `"a"`는 문자열 내에서 두 번 발견되어 `"o"`로 대체됩니다.

주의할 점 1. 원본 문자열 불변성 : `String.Replace()` 메서드는 원본 문자열을 변경하지 않으며, 항상 새로운 문자열을 반환합니다.

따라서 반환된 값을 사용하지 않으면 대체 작업이 무시됩니다.



2. null 값 처리 : `oldValue`가 `null`인 경우 `ArgumentNullException`이 발생합니다.

따라서 대체할 문자열이 null인지 확인하는 것이 좋습니다.



3. 성능 : 대규모 문자열에서 여러 번 대체 작업을 수행할 경우, 성능에 영향을 줄 수 있습니다.

이 경우 `StringBuilder`를 사용하는 것이 더 효율적일 수 있습니다.

결론 C 의 `String.Replace()` 메서드는 문자열 내에서 특정 부분을 다른 문자열로 대체하는 간단하면서도 강력한 방법입니다.

다양한 상황에서 유용하게 사용될 수 있으며, 대소문자 구분, 원본 문자열 불변성, 성능 등을 고려하여 적절히 활용하는 것이 중요합니다.

작성자: 이서현 [비회원] | 작성일자: 1년 전 2024-09-09 08:39:00
조회수: 150 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.