asp.net中C#擷取字串中漢字的個數執行個體

來源:互聯網
上載者:User

符串可以包括數字,字母,漢字或者其他的字元。使用Char類型的IsDigit靜態方法可以判斷字串中的字元是否為數字,使用Char類型中的IsLetter靜態方法可以判斷字串中是否為字母。我們來實現一種方法來實現判斷字串中是否為漢字,通過此方法可以計算字串中漢字的個數,運行效果如圖:

首先根據效果圖設定好Form的介面和內容,Box1.Text為輸入的字串,我們對該字串的處理,來計算漢字的個數,雙擊Buton控制項,編輯其單擊事件代碼。

我們看下漢字的Unicode範圍,普遍給出了0x4E00到0x9FA5,只要我們接受到的字元的16進位編碼在此範圍,我們就認為此字元為漢字(label4.Text顯示漢字的個數)

 代碼如下 複製代碼

string a=Box1.Text;
int K = 0;
for (int i = 0; i < a.Length;i++ )
{
char j=a[i];
ushort s = j;
if (s >= 0x4E00&&s<=0x9FA5)
{
K++;
}
label4.Text = “” + K;

後再再整理了一些函數 C#中使用Regex來從字串中判斷出漢字

 代碼如下 複製代碼

//首先引用命名空間
using System.Text.RegularExpressions;

//定義一個函數,返回字串中的漢字個數
public static int GetHanNumFromString(string str)
{
    int count = 0;
    Regex regex = new Regex(@"^[u4E00-u9FA5]{0,}$");

    for (int i = 0; i < str.Length; i++)
    {
        if (regex.IsMatch(str[i].ToString()))
        {
            count++;
        }
    }

    return count;
}

代碼說明:

1、Unicode字元的u4E00到u9FA5之間為漢字編碼,所以使用它來表示漢字的正則匹配範圍。
2、字串可以直接進行索引,索引得到的值的資料類型為char,所以str[i].ToString()是為了把char再度轉換為字串。
3、使用Regex的IsMatch方法,可以判斷字串是否與給定的Regex匹配,如果匹配成功則返回True,否則為False。

例,擷取一個字串中的漢字的個數 C#擷取字串全形的個數

 代碼如下 複製代碼

static void Main(string[] args)
        {
            while (true)
            {

      Console.WriteLine("輸入一串字元");
                string str = Console.ReadLine();//定義一個變數str用來儲存輸入的字串
                int num= Encoding.Default.GetByteCount(str);//Encoding.Default.GetByteCount(str)在系統預設下計算對字元進行編碼是所產生的位元組數
                int len = str.Length;//擷取字串的長度
                Console.WriteLine("有{0}漢字",num-len);//num-len就是字串中的漢字個數         
            }
}

例,這個也是正常的

 代碼如下 複製代碼

ArrayList itemList = new ArrayList();
CharEnumerator CEnumerator = textBox1.Text.GetEnumerator();
Regex regex = new Regex("^[/u4E00-/u9FA5]{0,}$");
while (CEnumerator.MoveNext())
{
     if(regex.IsMatch(CEnumerator.Current.ToString(),0))
         itemList.Add(CEnumerator.Current.ToString());
     textBox2.Text = itemList.Count.ToString();
}

原理是:獲得字串中漢字的個數時,可以首先定義一個與漢字相匹配的Regex,然後使用CharEnumerator對象的MoveNext方法逐一查看字串中的每個字元,如果訪問的字元與定義的Regex相匹配,則將其添加到一個數組中,最後獲得該數組的項數即為字串中漢字的個數。獲得字串中漢字個數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.