亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#正則表達(dá)式與HashTable詳解

 更新時(shí)間:2022年07月18日 10:21:04   作者:Mwyldnje2003  
這篇文章主要介紹了C#正則表達(dá)式與HashTable詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1、正則表達(dá)

Regular Expressiong,Regex、Regexp

常見語(yǔ)法:

  • 字符匹配
  • 重復(fù)匹配
  • 字符定位
  • 轉(zhuǎn)義匹配

其他高級(jí)語(yǔ)法(字符分組、字符替換和字符決策)

正則表達(dá)式軟件:RegEx Tester

匹配規(guī)則

  • 原樣匹配

元字符匹配:

  • 原樣匹配的時(shí)候,采用的都是不變的直接量字符
  • 采用元字符可以匹配一類字符,元字符可以是一個(gè)單獨(dú)的字符,也可以是一對(duì)(前一個(gè)字符通常是反斜杠)元字符:

正則表達(dá)式 

  • [a-zA-Z]:匹配a到z的任意字符
  • [0-9]:匹配0到9的任意數(shù)字

轉(zhuǎn)義字符

如果想查找元字符本身,就必須采用\配合對(duì)應(yīng)院子符來(lái)取消特定字符。
如果想查找\或.就采用\或.

限定字符

限定字符又叫重復(fù)描述字符,標(biāo)識(shí)一個(gè)字符要出現(xiàn)的次數(shù)

分組()

Ip地址正則表達(dá)式:

Ip地址匹配(需驗(yàn)證)
((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)

刪除空行:^[\s\t]*\n

2、C#中正則表達(dá)式構(gòu)建與匹配

使用方法:

  • 引用命名空間System.Text.RegularExpressions
  • 構(gòu)造正則表達(dá)式
  • 在使用正則表達(dá)式時(shí),要先構(gòu)造正則表達(dá)式,這就用到了Regex類。

其構(gòu)建方式有兩種:

  • 基本形式:Regex(正則表達(dá)式)
  • 重載形式:Regex(正則表達(dá)式,匹配選項(xiàng))

其中匹配選項(xiàng)提供一些特殊的幫助,是一個(gè)枚舉值,包括下面六個(gè)值:

  • IgnoreCase(忽略大小寫)
  • ReghtToLeft(從右向左)
  • None(默認(rèn))
  • CultureInvariant(忽略區(qū)域)
  • MultLine(多行模式)
  • SingleLine(單行模式)

在Regex類中包含IsMatch(),Replace(),Split()等
IsMatch():測(cè)試字符是否滿足正則表達(dá)式,返回一個(gè)布爾值,驗(yàn)證用戶輸入的數(shù)據(jù)是否滿足條件(例如是否為合法手機(jī)號(hào),是否為合法郵箱等)。
IsMatch()的使用格式:Regex.IsMatch(要判斷的字符串,正則表達(dá)式)

using System;
using System.Text.RegularExpressions;
namespace 正則表達(dá)式的構(gòu)建及匹配
{
    class Program
    {
        static void Main(string[] args)
        {
            //判斷是否為北京市固定電話,區(qū)號(hào)為010,民用電話號(hào)碼為7-8位

            string pattern = @"^(010|010-)\d{7,8}$";  //判定的模式
            string[] input = { "010-12345678", "01023415678", "01098765897", "031078965476" };
            Console.WriteLine("靜態(tài)方法");
            foreach (string outstr in input)
            {
                bool mybool = Regex.IsMatch(outstr.Trim(),pattern);
                if(mybool)
                {
                    Console.WriteLine(outstr+"是北京固話");
                }
                else
                {
                    Console.WriteLine(outstr+"不是北京市固話");
                }
            }
            //實(shí)例化的方式
            Console.WriteLine("實(shí)例化方式");
            foreach (string outstr in input)
            {
                Match mymatch = Regex.Match(outstr.Trim(), pattern);
                if (mymatch.Success)
                {
                    Console.WriteLine(outstr + "是北京固話");
                }
                else
                {
                    Console.WriteLine(outstr + "不是北京市固話");
                }
            }
            Console.ReadKey();
        }
    }
}

正則表達(dá)式的替換

格式:Regex.Replace(要搜索匹配項(xiàng)的字符串,要替換的原字符串,替換后的字符串);

using System;
using System.Text.RegularExpressions;

namespace 正則表的是的替換
{
    class Program
    {
        static void Main(string[] args)
        {
            //將www.替換為http://www.
            string mystr = "Welcome to www.darly.net WWW.darly.com WwW.darly.org";
            string pattern = @"\bw{3}\.\w+\.(com|net|org)\b";
            string replacement1 = @"http://$&";  //$&匹配的內(nèi)容
            string replacement2 = "\n"+ @"http://$&";  //$&匹配的內(nèi)容,此種方式只是將響應(yīng)的字符拼接到匹配的字符串前面,

            Console.WriteLine("替換前的字符串"+mystr);
            Console.WriteLine("替換后的字符串1-1" + Regex.Replace(mystr, pattern, replacement1));
            Console.WriteLine("替換后的字符串2-1" + Regex.Replace(mystr, "www.", @"http://www."));    //此種方式是將匹配的內(nèi)容替換成目標(biāo)字符
            Console.WriteLine("替換后的字符串1_2" + Regex.Replace(mystr, pattern, replacement2,RegexOptions.IgnoreCase));
            Console.WriteLine("替換后的字符串2-2" + Regex.Replace(mystr, "www.", "\n"+@"http://www.",RegexOptions.IgnoreCase));
            Regex myregex = new Regex(pattern,RegexOptions.IgnoreCase);
            string result = myregex.Replace(mystr, replacement2);
            Console.WriteLine("替換后的字符串3" +result);

            Regex myregex4 = new Regex(pattern,RegexOptions.IgnoreCase);
            string result4 = myregex4.Replace(mystr, replacement2);
            Console.WriteLine("替換后的字符串4" + result4);

            string pattern5 = @"\bw{3}\.";
            string replacement5 = "\n" + @"http://www.";
            Console.WriteLine("替換后的字符串5" + Regex.Replace(mystr,pattern5,replacement5,RegexOptions.IgnoreCase));

            Console.ReadLine();
        }
    }
}

正則表達(dá)式拆分

要通過(guò)正則表達(dá)式拆分字符串,就要通過(guò)Regex類的Split方法,格式為:
Regex.Split(要拆分的字符串,要匹配的正則表達(dá)式模式)

using System;
using System.Text.RegularExpressions;
namespace 正則表達(dá)式的拆分
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "一、張三 二、李四 三、王五 四、趙六";
            string patern = @"\b[一二三四]、";
            Console.WriteLine(Type.GetType((Regex.Split(input, patern)).ToString()));
            foreach (string outstr in Regex.Split(input,patern))
            {
                if(!string.IsNullOrEmpty(outstr))Console.WriteLine(outstr);
            }
            Console.ReadKey();
        }
    }
}

HashTable概述及元素添加

HashTable也被稱作為哈希表,鍵值對(duì)或者關(guān)聯(lián)數(shù)組。
用于處理和表寫類似Ken/value的減值對(duì),其中Key通??捎脕?lái)快速查找,同時(shí)Key是區(qū)分大小寫;Value用于存儲(chǔ)對(duì)應(yīng)于Key的值。HashTable中key/value鍵值對(duì)均為Object類型,所有HashTable可以支持任何類型的Key/Value鍵值對(duì)。
Hashtable特點(diǎn):鍵與值成對(duì)存在,鍵時(shí)唯一的不能重復(fù)的
HashTable中的每個(gè)元素時(shí)一個(gè)存儲(chǔ)在DictionaryEntry對(duì)象中的鍵值對(duì)

HashTable優(yōu)點(diǎn) :把數(shù)據(jù)的存儲(chǔ)和查找的時(shí)間大降低幾乎可以看成是常數(shù)時(shí)間;而代價(jià)僅僅小號(hào)比較多的內(nèi)容。然而在當(dāng)前可利用內(nèi)存越來(lái)越多的情況下,用空間換取時(shí)間的做法是可取的。另外,編碼比較容易也是他的特點(diǎn)之一。

聲明格式:
引入命名空間:using System.Collections;

元素添加方法 Add

using System;
using System.Collections;
namespace Hasehtable1
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add("name", "darly");
            ht.Add("gender", "男");
            ht[3] = "王五";  //用此種方式一堆Hashtable去增加元素時(shí)應(yīng)該注意
            //如果對(duì)應(yīng)的鍵key存在只是達(dá)到一種重新賦值的結(jié)果,如果不存在才會(huì)增加對(duì)應(yīng)鍵值對(duì)
            ht["gender"] = "女";
            //數(shù)組通過(guò)length可以確定長(zhǎng)度
            //集合是通過(guò)count來(lái)確定個(gè)數(shù)
            Console.WriteLine(ht.Count);
            Console.ReadKey(); 

        }
    }
}

Hashtable遍歷

遍歷用到DictionaryEntry(字典鍵/值對(duì))

using System;
using System.Collections;
namespace Hasehtable1
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add("name", "darly");
            ht.Add("gender", "男");
            ht[3] = "王五";  //用此種方式一堆Hashtable去增加元素時(shí)應(yīng)該注意
            //如果對(duì)應(yīng)的鍵key存在只是達(dá)到一種重新賦值的結(jié)果,如果不存在才會(huì)增加對(duì)應(yīng)鍵值對(duì)
            ht["gender"] = "女";
            ht["department"] = "測(cè)試部";

            //數(shù)組通過(guò)length可以確定長(zhǎng)度
            //集合是通過(guò)count來(lái)確定個(gè)數(shù)
            Console.WriteLine(ht.Count);
            foreach(object myobj in ht)
            {
                Console.WriteLine(myobj);  //此處僅僅輸入的是類型
            }
            foreach (DictionaryEntry myobj in ht)
            {
                Console.WriteLine("鍵為:{0},值為:{1}",myobj.Key,myobj.Value);
            }
            foreach(object myobj in ht.Keys)
            {
                Console.WriteLine("鍵為:{0};值為{1}", myobj,ht[myobj]);
            }
            Console.ReadKey(); 

        }
    }
}

Hashtable元素的刪除

  • Remove
  • Clear
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hashtable元素刪除
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add(1, "張颯");
            ht.Add(true,"李四");
            ht.Add(false, "王五");
            ht.Add(3, "趙六");
            foreach(DictionaryEntry myde in ht)
            {
                Console.WriteLine("鍵為{0},值為:{1}", myde.Key, myde.Value);

            }
            //刪除Remove
            ht.Remove(false);
            Console.WriteLine("移除結(jié)果");
            foreach (DictionaryEntry myde in ht)
            {
                Console.WriteLine("鍵為{0},值為:{1}", myde.Key, myde.Value);

            }
            //刪除Clear,刪除所有內(nèi)容
            ht.Clear();
            Console.WriteLine("清除結(jié)果");
            foreach (DictionaryEntry myde in ht)
            {
                Console.WriteLine("鍵為{0},值為:{1}", myde.Key, myde.Value);

            }
            Console.ReadLine();

        }
    }
}

HashTable元素查找

Hashtable特點(diǎn):鍵與值成對(duì)存在,鍵時(shí)唯一的不能重復(fù)的,在查找元素的時(shí)候,我們往往是依據(jù)鍵查找值的。
三種方法:(前兩種方法是實(shí)質(zhì)是一樣的)

  • Contains
  • ContainsKey
  • ContainsValue
using System;
using System.Collections;
namespace Hashtable元素查找
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add(1, "張三");
            ht.Add(2, "里斯");
            ht.Add(3, "王五");
            ht.Add(4, "趙六");
            ht[5] = "何七";
            ht[6] = "張三";
            Console.WriteLine("添加的結(jié)果");
            foreach(DictionaryEntry myde in ht)
            {
                Console.WriteLine("鍵為{0}——職位{1}", myde.Key, myde.Value);

            }
            //元素查找
            if(ht.ContainsKey(1))   //ContainsKey()存在返回true,不存在返回false
                Console.WriteLine("存在鍵=1的元素");
            else Console.WriteLine("不存在該該鍵");
            if (ht.ContainsValue("張三")) Console.WriteLine("存在值為張三的元素");
            else Console.WriteLine("不存在值為張三的元素");
            Console.Read();
        }
    }
}

任務(wù)小結(jié)

統(tǒng)計(jì)指定字符串(字符串可自行聲明)中漢字的個(gè)數(shù)以及每個(gè)漢字出現(xiàn)的次數(shù),將其輸出到屏幕上

編程思路:

  • 判斷漢字,可以通過(guò)正則表達(dá)式
  • 然后可將對(duì)應(yīng)漢字存入ArrayList中
  • 通過(guò)一定的運(yùn)算規(guī)則,計(jì)算出漢字的個(gè)數(shù)與出現(xiàn)的次數(shù)并將結(jié)果對(duì)應(yīng)存入Hashtable
  • 遍歷Hashtable即可完成任務(wù)實(shí)施
using System;
using System.Text.RegularExpressions;
using System.Collections;
namespace 任務(wù)小結(jié)
{
    class Program
    {
        static void Main(string[] args)
        {
            //統(tǒng)計(jì)指定字符串(字符串可自行聲明)中漢字的個(gè)數(shù)以及每個(gè)漢字出現(xiàn)的次數(shù),將其輸出到屏幕上
            Console.WriteLine("請(qǐng)輸入一個(gè)字符串,系統(tǒng)將自動(dòng)計(jì)算漢字個(gè)數(shù)以及每個(gè)漢字的出現(xiàn)次數(shù)");
            string mystr = Console.ReadLine();
            string pattern = @"[^\u4e00-\u9fa5]";  //判定非漢字的字符,將非漢字的字符替換掉就是全部的漢字
            Regex myregex = new Regex(pattern);
            string chnstr = myregex.Replace(mystr, "");
            Hashtable ht = new Hashtable();
            for (int i = 0; i < chnstr.Length; i++)
            {
                int val = 1;
                if(ht.ContainsKey(chnstr[i]))
                {
                   val = Convert.ToInt32(ht[chnstr[i]]);
                    ++val;
                    ht[chnstr[i]] = val;
                }
                else
                {
                    ht.Add(chnstr[i], val);
                }
            }
            Console.WriteLine("原有的字符串是:" + mystr);
            foreach (DictionaryEntry de in ht)
            {
                Console.WriteLine("漢字{0}出現(xiàn)了{(lán)1}次",de.Key,de.Value);
            }
            Console.ReadKey();
        }
    }
}

到此這篇關(guān)于C#正則表達(dá)式與HashTable詳解的文章就介紹到這了,更多相關(guān)C# 正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中事件的繼承實(shí)例分析

    C#中事件的繼承實(shí)例分析

    這篇文章主要介紹了C#中事件的繼承,通過(guò)一個(gè)面向?qū)ο蟪绦驅(qū)嵗齺?lái)說(shuō)明子類調(diào)用父類事件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-08-08
  • C#虛函數(shù)用法實(shí)例分析

    C#虛函數(shù)用法實(shí)例分析

    這篇文章主要介紹了C#虛函數(shù)用法,實(shí)例分析了C#中虛函數(shù)的功能與基本使用技巧,需要的朋友可以參考下
    2015-07-07
  • C#開發(fā)教程之利用特性自定義數(shù)據(jù)導(dǎo)出到Excel

    C#開發(fā)教程之利用特性自定義數(shù)據(jù)導(dǎo)出到Excel

    這篇文章主要介紹了C#開發(fā)教程之利用特性自定義數(shù)據(jù)導(dǎo)出到Excel的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • VS2017使用Git進(jìn)行源代碼管理的實(shí)現(xiàn)

    VS2017使用Git進(jìn)行源代碼管理的實(shí)現(xiàn)

    這篇文章主要介紹了VS2017使用Git進(jìn)行源代碼管理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#編程中最容易犯的7種編寫錯(cuò)誤分享

    C#編程中最容易犯的7種編寫錯(cuò)誤分享

    編程時(shí)犯錯(cuò)是必然的,這篇文章主要和大家來(lái)分享7個(gè)C#編程中最容易犯的7種編寫錯(cuò)誤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • 如何最大限度地降低多線程C#代碼的復(fù)雜性

    如何最大限度地降低多線程C#代碼的復(fù)雜性

    這篇文章主要介紹了如何最大限度地降低多線程C#代碼的復(fù)雜性,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • C#中IList<T>與List<T>的區(qū)別深入解析

    C#中IList<T>與List<T>的區(qū)別深入解析

    本篇文章主要是對(duì)C#中IList<T>與List<T>的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#?泛型集合類List<T>使用總結(jié)

    C#?泛型集合類List<T>使用總結(jié)

    本文主要主要介紹了C#?泛型集合類List<T>使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-05-05
  • C# 通過(guò)NI-VISA操作Tektronix TBS 2000B系列示波器的實(shí)現(xiàn)步驟

    C# 通過(guò)NI-VISA操作Tektronix TBS 2000B系列示波器的實(shí)現(xiàn)步驟

    這篇文章主要介紹了C# 通過(guò)NI-VISA操作Tektronix TBS 2000B系列示波器的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • c# 常量和字段

    c# 常量和字段

    常量:是一個(gè)特殊的符號(hào),有一個(gè)從不變化的值
    2012-10-10

最新評(píng)論