문자열 길이 자르기

//////지정한 바이트 길이의 문자열을 캡처하는 가장 표준적인 방법(초과할 때 이전 유효한 위치만 기록)//////원 문자열// 바이트 길이 캡처 // public string CutByteString (string str, int len) {string result = string.empty;//최종 반환 결과if (string.IsNull OrEmpty (str)) {return result;            int byteLen = System.Text.Encoding.Default.GetByteCount(str);//싱글바이트 문자 길이 int charLen = str.Length;//문자를 동등하게 사용할 때의 문자열 길이 int byteCount = 0;//읽기 진행 기록 int pos = 0;//레코드 캡처 위치 if(byteLen > len) {for (int i = 0; i < charLen; i++) {if(Convert.ToInt32 (str.ToCharArray () [i] > 255)//중국어 문자로 2 더하기{ byteCount += 2; } else//영문자 계산에 1 {byteCount + = 1;} 추가if(byteCount > len)//초과 시 이전 유효한 위치 {pos = i;break만 기록합니다.} else if(byteCount==len)//현재 위치 {pos=i + 1;break;                    }                 }                 if (pos >= 0)                 { result = str.Substring(0, pos); }             }             else             { result = str; }             return result;         }
 
//문자열 길이 가져오기
    static int StrLength(string str)     {         int len = 0;         byte[] b;
        for (int i = 0; i < str.Length; i++)         {             b = Encoding.Default.GetBytes(str.Substring(i, 1));             if (b.Length > 1)                 len += 2;             else                 len++;         }
        return len;     }
 
 
//문자열 절취
    static string StrCut(string str, int length)     {         int len = 0;         byte[] b;         StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.Length; i++)         {             b = Encoding.Default.GetBytes(str.Substring(i, 1));             if (b.Length > 1)                 len += 2;             else                 len++;
            if (len >= length)                 break;
            sb.Append(str[i]);         }
        return sb.ToString();     }
 
//문자열 절취
      public static string GetFirstString(string stringToSub, int length)        {                       Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);            char[] stringChar = stringToSub.ToCharArray();            StringBuilder sb = new StringBuilder();            int nLength = 0;            bool isCut = false;            for (int i = 0; i < stringChar.Length; i++)            {                if (regex.IsMatch((stringChar[i]).ToString()))                {                    sb.Append(stringChar[i]);                    nLength += 2;                }                else                {                    sb.Append(stringChar[i]);                    nLength = nLength + 1;                }
               if (nLength > length)                {                    isCut = true;                    break;                }            }            if (isCut)                return sb.ToString() + "..";            else                return sb.ToString();                   }
public static string stringformat(string str,int n)
{
///
///        ,         ,       。  2   ,        
///
    string temp=string.Empty;
    if(System.Text.Encoding.Default.GetByteCount(str)<=n)//          n ,      
    {
          return str;
    } else {
    int t=0;
    char[] q=str.ToCharArray();
    for(int i=0;i<q.Length&&t<n;i++)
      {
       if((int)q[i]>=0x4E00 && (int)q[i]<=0x9FA5)//    
            {
                  temp+=q[i];
                  t+=2;
             }
             else
               {
                 temp+=q[i];
                 t++;
                }
             }
         return (temp+"...");
       }
   }

 
 
JS:
byteLength: 데이터베이스 바이트 길이 title: 필드의 중국어 이름 attribute: 속성 이름(고정: this) 사용 방법 설명:
(1) 텍스트 대상에 onkeyup 이벤트를 추가합니다: onkeyup = "limitLength(this,'이름', 100)"를 추가하면 됩니다. 
            function limitLength(attribute, title, byteLength) {            //var byteLength=8;            //alert(attribute);             var count = 0;            //alert(count);             var value = attribute.value;             var newvalue = value.replace(/[^\x00-\xff]/g, "**");             var length = newvalue.length;            //alert(newvalue);//입력한 바이트 수가 설정된 바이트 수if(length * 1 < = byteLength * 1) {return보다 적으면            }             var limitData = newvalue.substr(0, byteLength);            //alert(limitData);             var count = 0;             var limitvalue = "";             for (var i = 0; i < limitData.length; i++) {                 var flat = limitData.substr(i, 1);                 if (flat == "*") {                     count++;                 }             }            //alert(count);             var size = 0;             var istar = newvalue.substr(byteLength * 1 - 1, 1);//체크포인트가 "인지 확인×”
//if 기준점은×; 판단은 기점 내에 있다×짝수인지 홀수인지 if(count% 2 = 0) {//짝수일 때size = count/2 + (byteLength * 1 - count), limitvalue = value.substr(0,size);} else {//홀수일 때size = (count - 1)/2 + (byteLength * 1 - count), limitvalue =value.substr(0,size);} alert(title + "최대 입력"+ byteLength + "바이트 ("+ byteLength/2 + "한자)!"            attribute.value = limitvalue;             attribute.focus();             return;         }    

 function cutstr(str,len) {    var str_length = 0;    var str_len = 0;       str_cut = new String();       str_len = str.length;       for(var i = 0;i 4)         {//중국어 문자의 길이는 인코딩된 후 4str length++ 이상입니다.         }          str_cut = str_cut.concat(a);          if(str_length>=len)          {          str_cut = str_cut.concat("...");          return str_cut; }//주어진 문자열이 지정한 길이보다 작으면 원본 문자열을 되돌려줍니다.    if(str_length

좋은 웹페이지 즐겨찾기