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/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
11.6: 문자열의 시작 혹은 끝으로부터 원치 않는 문자들을 잘라내기 (trim) (0) | 2021.01.28 |
---|---|
11.5: String.IsNullOrEmpty() 와 String.IsNullOrWhiteSpace() 를 이용하여 빈 문자열 여부를 확인하기 (0) | 2021.01.28 |
11.3: 문자열을 고정 길이로 표시하기 위해 여백 문자 채워넣기 (padding) (0) | 2021.01.26 |
11.2: 문자열을 올바른 방법으로 뒤집기 (reverse) (0) | 2021.01.25 |
11.1: 문자열 서식 (format) 사용하기 (0) | 2021.01.20 |