程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中切割字符串之正則表達式應用

C#中切割字符串之正則表達式應用

編輯:C#入門知識

這個是我做的使用正則表達式來切割字符串的一個案例部分代碼:

功能簡介:一條物流信息字符串中截取出多種數據詳情

需要切割出的數據包括:

起始地,目的地,貨物數量,貨物單位,貨物類型,車數量,車長度,車類型,價格,價格單位

需要切割字符串類型舉例(多種,包括有車求貨,有貨求車等):

 

1、湖南衡陽->湖南湘潭、湖南長沙,有6米半封閉車,求1-8噸貨

2、湖南長沙->河南南陽,有9.6米平板車,求貨

3、湖南長沙->青海、陝西西安、陝西漢中、陝西安康,有2台6.8米高欄車,求12-25噸貨

4、湖南湘潭->湖南岳陽臨湘,有27-120噸重貨,求1-3台9.6-17.5米車,今天定車 明天裝貨

5、湖南岳陽臨湘->山東菏澤,有15-28噸棉花,求9.6-17米車,230元/噸,馬上可以裝貨

6、湖南長沙->湖南益陽安化縣,有1噸貨物,求2-3米車,急運

7、湖南湘潭->江西贛州,有35-40噸貨物,求半掛車,急運

...

 

當然,這些僅僅只是舉例

下面是方法詳細代碼:

using System.Text;

using System.Text.Regularexpressions;

#region 使用正則表達式切割字符串
        /// <summary>
        /// 切割字符串分別賦值給KC_INFO實例的屬性:
        /// KCI_START_ADDRESS,KCI_END_ADDRESS,KCP_GOODS_ID,KCI_GOODS_NUMBER,KCI_GOODS_UNIT,KCP_CAR_ID,KCI_CAR_NUMBER,KCI_CAR_LENGTH,KCI_PRICE,KCI_PRICE_UNIT
        /// </summary>
        /// <param name="ki"></param>
        public void splitMainInfoString(KC_INFO ki)
        {
            string reg_start_address = string.Format(@"^[^->]*(?=->)");
            string reg_end_address = string.Format(@"(?<=->)[^,]*(?=,)");
            string reg_goods_number = string.Empty;
            string reg_goods_unit = string.Empty;
            string reg_goods_id = string.Empty;
            string reg_car_id = string.Empty;
            string reg_car_number = string.Empty;
            string reg_car_length = string.Empty;
            string reg_price = string.Empty;
            string reg_price_unit = string.Empty;
            //用,號分割字符串
            MatchCollection ms = Regex.Matches(InfoText, @"[^,]*[^s](?=,|$)");
            string goodsInfoString = string.Empty;
            string carInfoString = string.Empty;
            if((new int[]{2,22,5}.Contains(this.Type))) //有貨求車
            {
                //貨物信息字符串
                goodsInfoString = ms[1].ToString();
                //車輛信息字符串
                carInfoString = ms[2].ToString();
                //匹配貨物數量的Regularexpression
                reg_goods_number = string.Format(@"(?<=有)((d+.d+)|(d+-d+)|d+)(?=(噸|方|件|車|公斤|個|台))");
                //匹配貨物單位
                reg_goods_unit = string.Format(@"(?<=有((d+.?d+)|(d+-d+)|d+))(噸|方|件|車|公斤|個|台)");
                //匹配貨物單位
                reg_goods_id = string.Format(@"(?<=有((d+.d)|(d+-d+)(d+))(噸|方|件|車|公斤|個|台))w+");

 

                //匹配需要車的數量
                reg_car_number = string.Format(@"(?<=求)((d+-d+)|(d+))(?=台)|(?<=求)大量");
                //匹配車的長度
                reg_car_length = @"(?<=求*[^d])((d+.d+)|(d+-d+)|(d+.?d{0,}-d+.?d{0,})|(d+))(?=米)";
                //匹配車的類型
                reg_car_id = string.Format(@"(冷藏|後八輪或前四後八|零擔|s無箱板車|本地車|駁船|60公分欄半掛)(?=車)");
            }
            else                                        //有車求貨
            {
                goodsInfoString = ms[2].ToString();
                carInfoString = ms[1].ToString();
                //匹配需要貨物數量
                reg_goods_number = @"(?<=求)(((d+.?d{0,})-(d+.?d{0,}))|(d+.d+)|(d+)|大量)";
                //貨物單位統一為噸
                reg_goods_unit = string.Format("噸");
                //不限貨物類型
                reg_goods_id = string.Empty;   
                //匹配車的數量
                reg_car_number = string.Format(@"(?<=有)(d+-d+|d+|大量)(?=台)");
                //匹配車的長度

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