더북(TheBook)

7. DotNetNote.Dul 프로젝트에서 마우스 오른쪽 버튼을 클릭 후 추가 > 클래스를 클릭해 StringLibrary.cs라는 이름으로 클래스 파일을 생성하고, 다음과 같이 코드를 작성한다. 참고로 다음 코드 중에서 CutStringUnicode() 메서드는 코드 윗부분에 있는 CutString() 메서드와 기능이 같다. .NET Core는 .NET Framework의 경량화 버전이다. 유니코드 문자열을 자르는 등의 세세한 기능을 제공하는 명령어들은 .NET Framework에는 있지만, .NET Core에는 아직 없다. 이러한 내용은 시간이 지나고 .NET Core의 버전이 올라감에 따라서 서서히 해결될 부분이라고 본다.

▼  StringLibrary.cs

namespace DotNetNote.Dul
{
  public static class StringLibrary
  {
      /// <summary>
      /// 주어진 문자열을 주어진 길이만큼만 잘라서 반환. 나머지 부분은 ‘…‘을 붙임.
      /// </summary>
      /// <param name=“strCut”>원본 문자열</param>
      /// <param name=“intChar”>잘라낼 길이</param>
      /// <returns>안녕하세요. => 안녕…</returns>
      public static string CutString(this string strCut, int intChar)
      {
          if (strCut.Length > (intChar - 3))
          {
              return strCut.Substring(0, intChar - 3) + ”…”;
          }
          return strCut;
      }
      
      /// <summary>
      /// 유니코드 이모티콘을 포함한 문자열 자르기
      /// </summary>
      /// <param name=“str”>한글, 영문, 유니코드 문자열</param>
      /// <param name=“length”>자를 문자열의 길이</param>
      /// <returns>잘라진 문자열</returns>
      public static string CutStringUnicode(this string str, int length)
      {
          string result = str;
          
#if DNX451 // 참고 목적으로 이 코드는 남겨 놓음
          var si = new System.Globalization.StringInfo(str);
          var l = si.LengthInTextElements;
          
          if (l > (length - 3))
          {
              result = si.SubstringByTextElements(0, length - 3) + ”…”;
          }
#else // 실제로는 여기 코드가 실행되어 CutString() 메서드와 동일한 기능을 함
          if (result.Length > (length - 3))
          {
              return result.Substring(0, length - 3) + ”…”;
          }
#endif
          
          return result;
      }
  }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.