/// <summary>
/// 문자열을 바이트 단위로 잘라낸다.한글 2바이트, 영문 1바이트
/// </summary>
/// <param name="sStr"></param>
/// <param name="nLen"></param>
/// <returns></returns>

public static string strSplitStringB(string sStr, int nLen)
{
 StringBuilder sbSplitStr = new StringBuilder();  // 리턴할 문자열
 string s = ((sStr == null) ? string.Empty : sStr.ToString().Trim());// 입력받은 문자열
 int nCount = 0;   // 문자열 카운트

 if (s.Trim().Length == 0)
  return sbSplitStr.ToString();

 char[] aStrChr = s.ToCharArray();

 if (aStrChr.Length != 0)
 {
  for (int i = 0; i < aStrChr.Length; i++)
  {
   int nTemp = Convert.ToInt32(aStrChr[i]);

   if (nTemp < 0 || nTemp >= 128)
   {
    // 한글일 경우 2바이트
    nCount += 2;
   }
   else
   {
    // 한글이 아닌경우 1바이트
    nCount++;
   }

   if (nCount <= nLen)
   {
    sbSplitStr.Append(s.Substring(i, 1));
   }
  }
  if (nCount > nLen)
  {
   sbSplitStr.Append("…");
  }
 }

 return sbSplitStr.ToString();
}

Posted by 따랑
,