程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> SubString()功能擴展。

SubString()功能擴展。

編輯:.NET實例教程

var alimama_pid="mm_10096109_566393_892186"; var alimama_titlecolor="0000FF"; var alimama_descolor ="000000"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_linkcolor="008000"; var alimama_bottomcolor="FFFFFF"; var alimama_anglesize="0"; var alimama_bgpic="0"; var alimama_icon="0"; var alimama_sizecode="11"; var alimama_width=760; var alimama_height=90; var alimama_type=2;


一個不錯的博客,東東還多些!http://onlyzq.cnblogs.com

首先我們來看2個需要用到SubString()的地方:

1、 在C#中,我們時常需要縮減字符,並且用"..."取代被縮減的部分,通常我們使用的是(string).SubString(),然後我們可以這樣縮減:


str = (str.Length>10)? str.SubString(0,10)+"..." : str ;

    這樣的寫好處是比較容易想到,且簡要易懂,便於編寫。
    這樣寫的不足是格式比較生硬,不便於復用,編寫效率低。

2、 我在開發一些項目的時候,還經常有這樣的需求:一個N長度的字符串,要取末尾的幾個字符,或者中間指定起始和結尾的一段字符,其余的用"..."表示,這時候往往需要比較復雜的判斷,最後用一個(string).SubString()

    下面我提供一種可以同時解決靈活性和繁瑣判斷的解決方案,希望可以拋磚引玉:

 


 1        /**//// <summary>
 2        /// 區字符串固定長度,其余的省略
 3        /// 
 4        /// 規則:
 5        ///  1.如果startIndex大於字符串長度,則自動調整到取最後maxLangth長度。如果此時maxLangth長度比字符串長度還要大,那麼startIndex回到0
 6        ///  2.如果在startIndex基礎上,取maxLangth長度大於比字符串長度,那麼maxLangth自動取到可能的最大值,即從startIndex一直取到字符串末尾
 7        ///  3.結果中,字符串只要有削減的地方,都以".."替代
 8        /// </summary>
 9        /// <param name="str">原字符串</param>
10        /// <param name="startIndex">起始字符串位置</param>
11        /// <param name="maxLangth">最長字符個數</param>
12        /// <returns></returns>
13        public static string SubString(string str, int startIndex, int maxLangth)
14        {
15            string substring = "";
16            //調整startIndex
18            if (startIndex > str.Length - 1)//如果startIndex大於字符串長度
19            {
20                startIndex = (str.Length - maxLangth > 0) ? str.Length - maxLangth : 0;//則自動調整到取最後maxLangth長度。如果此時maxLangth長度比字符串長度還要大,那麼startIndex回到0
21            }
22
23            //調整maxLangth
24            if (startIndex + maxLangth > str.Length)//如果在startIndex基礎上,取maxLangth長度大於比字符串長度
25            {
26                maxLangth = str.Length - startIndex;//那麼maxLangth自動取到可能的最大值,即從startIndex一直取到字符串末尾
27            }
28            //調整完成
29
30            //加縮略符號
31            substring += (startIndex > 0) ? ".." : "";//如果開頭削減,以".."替代
32
33            //進行取定長字符串
34            substring += str.Substring(startIndex, maxLangth);
35
36            //加縮略符號
37            substring += (str.Length - startIndex - maxLangth > 0) ? ".." : "";//如果結尾削減,以".."替代
38             return substring;
40        } 
41   


    你可以把這段程序放在一個單獨的類庫中,比如Common.StringHandle。由於采用了靜態方式,你只需要這樣直接調用:


str = Common.StringHandle.SubString(str , 7 , 8) ;

    關於處理機制和參數說明,在編寫的時候我已經說明的比較詳細了,下面我居舉一些簡單的例子:

要求:字符串“0123456789”中,取前5個字符,其余用“..”替代
代碼:Common.StringHandle.SubString("0123456789",0,5)
輸出結果:01234..

要求:字符串“0123456789”中,取“5”開始的3字符(不足3個則全取),如果之後還有其余用“..”替代
代碼:Common.StringHandle.SubString("0123456789",5,3)
輸出結果:..567..

要求:字符串“0123456789”中,取“5”開始的10字符(不足10個則全取),如果之後還有其余用“..”替代
代碼:Common.StringHandle.SubString("0123456789",5,10)
輸出結果:..56789

我在這也只是給出一種思路,這段代碼還有很多的擴展余地:比如約定".."的形式、實現從右截取N個字符,或者在.Net3.5中使用擴展方法(Extension Method)來完成等等(有些我已經實現,但由於加進來可能沖淡主題了,在此省略,不過我們可以例外探討)。

希望可以拋磚引玉,跟大家一起探討!

原文地址:http://www.cnblogs.com/szw/archive/2007/12/17/1003321.Html

Google的搜索終於可以用了!大家試試! Google

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved