c# ReplaceFirst 확장 메서드로 직접 구현하기
안녕하세요:)
오늘은 c#에서 지원하지 않는 ReplaceFirst를 확장 메서드로 직접 만들어서 사용해보도록 하겠습니다.
우선 c#에서 기본적으로 제공하는 Replace는 java에서의 ReplaceAll의 역할을 하고 있어서
아래 date 변수의 "날짜 : 2021:01:25, 시간 : 00:00:00"의 값을 Replace를 사용하여 ":" 콜론을 치환하면
결과는 > "날짜 20210125, 시간 000000" 다음과 같이 바뀌겠죠?
java나 다른 언어에서는 ReplaceFirst를 기본적으로 제공하는 경우가 많습니다.
하지만 c#은 그렇지 않습니다. 하지만 확장 메서드라는 기능을 제공하고 있는데요
먼저 확장 메서드가 뭔지부터 알아보도록 하죠!
var date = "날짜 : 2021:01:25, 시간 : 00:00:00";
var replace = date.Replace(":", string.Empty);
확장 메서드(Extension Method)
확장 메서드는 c# 3.0부터 지원을 하는 메서드입니다. (아래 MSDN 링크를 남겨드렸으니 참고 바랍니다)
그리고 특수한 종류의 static메서드이고요, 확장 메서드를 이용한다면 기존 형식의 코드를
변경하지 않고 내 코드에서 어떤 형식이던지 메서드를 확장시킬 수 있습니다!
확장 메서드(Extension Method) 사용조건
확장 메서드(ExtensionMethod)를 사용할 때 꼭 지켜야 할 조건이 있습니다.
- 확장 메서드를 가진 클래스는 반드시 static class 이어야 합니다.
- 확장 메서드는 static 메서드 이어야 합니다.
- 확장 메서드의 첫 번째 파라미터에는 this 지시어가 들어가야 합니다.
저는 ExtensionsTest라는 static 클래스에 ReplaceFirst라는 static 메서드를 만들었습니다.
public static class ExtensionsTest
{
public static string ReplaceFirst(this string source, string find, string replace)
{
int index = source.IndexOf(find);
return index < 0 ? source : source.Substring(0, index) + replace + source.Substring(index + find.Length);
}
}
바로 한번 사용을 해볼까요?
아래 사진과 같이 확장 메서드를 추가한 이후에 ReplaceFirst라는 확장 메서드가 생긴 걸 확인할 수 있습니다.
var date = "날짜 : 2021:01:25, 시간 : 00:00:00";
var replace = date.Replace(":", string.Empty);
var replaceFirst = date.ReplaceFirst(":", string.Empty);
Console.WriteLine($"date = {date}");
Console.WriteLine($"replace = {replace}");
Console.WriteLine($"replaceFirst = {replaceFirst}");
결과는 어떨까요?
정말 재밌지 않나요? 맨 앞에 있는 날짜의 옆 ":" 콜론만 치환된 걸 확인할 수 있습니다.
'C#' 카테고리의 다른 글
c# 데이터 암복호화 막 하지 말자. (6) | 2021.02.06 |
---|---|
비주얼스튜디오 2015 ClickOnce 배포 필수구성요소 에러 (0) | 2021.02.05 |
c# 지역화 Localization (0) | 2021.01.24 |
c# 현재 시간, 오늘 날짜 가져오기(DateTime) (0) | 2021.01.23 |
c# json 특정 값 삭제하기 (0) | 2021.01.16 |
댓글