C#擷取指定長度中英文字串方法

l_serein發表於2012-12-15
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();
        }


我是從網上找的方法,然後新增了,如果是超過長度,則在後面新增".."字元。

這在做網站時,顯示新聞標題最非常有用,為了保持頁面的格局,對標題進行限定長度,這就需要對中文進行雙字元計算。

相關文章