Section 11.4: 문자열의 좌/우/중간으로부터 x 개의 문자를 가져오기

Visual Basic 에서는 문자열의 좌, 우, 그리고 중간으로부터의 임의의 문자들을 반환해주는 Left, Right, 그리고 Mid 와 같은 함수들이 존재한다. 이 메소드들이 C# 에서 존재하지는 않지만, Substring() 을 이용하여 구현 할 수 있다. 혹은 아래와 같이 extension method 로 구현을 할 수도 있다:

public static class StringExtensions { /// <summary> /// VB Left function /// </summary> /// <param name="stringparam"></param> /// <param name="numchars"></param> /// <returns>Left-most numchars characters</returns> public static string Left(this string stringparam, int numchars) { // stringparam 이 null 인 경우에 대한 처리 stringparam += string.Empty; // numchars 가 음수인 경우에 대한 처리 numchars = Math.Abs(numchars); // numchars 값 유효범위 확인 if (numchars > stringparam.Length) numchars = stringparam.Length; return stringparam.Substring(0, numchars); } /// <summary> /// VB Right function /// </summary> /// <param name="stringparam"></param> /// <param name="numchars"></param> /// <returns>Right-most numchars characters</returns> public static string Right(this string stringparam, int numchars) { // stringparam 이 null 인 경우에 대한 처리 stringparam += string.Empty; // numchars 가 음수인 경우에 대한 처리 numchars = Math.Abs(numchars); // numchars 값 유효범위 확인 if (numchars > stringparam.Length) numchars = stringparam.Length; return stringparam.Substring(stringparam.Length - numchars); } /// <summary> /// VB Mid function - to end of string /// </summary> /// <param name="stringparam"></param> /// <param name="startIndex">VB-Style startindex, 1st char startindex = 1</param> /// <returns>Balance of string beginning at startindex character</returns> public static string Mid(this string stringparam, int startindex) { // stringparam 이 null 인 경우에 대한 처리 stringparam += string.Empty; // startindex 가 음수인 경우에 대한 처리 startindex = Math.Abs(startindex); // startindex 값 유효범위 확인 if (startindex == 0) startindex = 1; // startindex 값 유효범위 확인 if (startindex > stringparam.Length) startindex = stringparam.Length; // C# 의 string 은 index 가 0 부터 시작하므로, 변환된 startindex 값을 사용한다 return stringparam.Substring(startindex - 1); } /// <summary> /// VB Mid function - for number of characters /// </summary> /// <param name="stringparam"></param> /// <param name="startIndex">VB-Style startindex, 1st char startindex = 1</param> /// <param name="numchars">number of characters to return</param> /// <returns>Balance of string beginning at startindex character</returns> public static string Mid(this string stringparam, int startindex, int numchars) { // stringparam 이 null 인 경우에 대한 처리 stringparam += string.Empty; // startindex 가 음수인 경우에 대한 처리 startindex = Math.Abs(startindex); // numchars 가 음수인 경우에 대한 처리 numchars = Math.Abs(numchars); // startindex 값 유효범위 확인 if (startindex == 0) startindex = 1; // startindex 값 유효범위 확인 if (startindex > stringparam.Length) startindex = stringparam.Length; // numchars 값 유효범위 확인 if (startindex + numchars > stringparam.Length) numchars = stringparam.Length - (startindex - 1); // C# 의 string 은 index 가 0 부터 시작하므로, 변환된 startindex 값을 사용한다 return stringparam.Substring( startindex - 1, numchars ); } }

역주: 원문에는 유효범위 확인 코드가 빠진 부분이 많아 추가적으로 채워넣긴 했으나, VB 처럼 배열의 index 가 1로 시작하는 것을 가정한 method 들이라 실제적으로 유용하지 않은 예제일 수 있습니다.

위와 같이 작성된 extension method 는 아래와 같이 사용될 수 있다:

string myLongString = "Hello World!"; string myShortString = myLongString.Right(6); // "World!" string myLeftString = myLongString.Left(5); // "Hello" string myMidString1 = myLongString.Left(4); // "lo World" string myMidString2 = myLongString.Left(2,3); // "ell"
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts