Thứ tư, ngày 21 tháng 11 năm 2018

Đếm từ sử dụng Regular Expression

Ngày đăng: 15/3/2011, 18:47:18PM | Lượt xem: 2,582
Hot!

Bạn có một xâu và bạn muốn đếm các từ trong đó. Đây là bài toán phổ biến đối với kiểu dữ liệu string. Các từ sẽ được cách nhau bởi dấu chấm, khoảng trắng…


Xâu

Số từ

To be or not to be, that is the question.

10

Mary had a little lamb.

5

 

Bài viết này giới thiệu với các bạn 2 phương thức dùng để đếm từ sử dụng ngôn ngữ C#. Đây là thuật toán được sử dụng trong hầu hết các trường hợp. Đầu tiên tôi xin giới thiệu phương thức sử dụng Regex và tiếp theo là sử dụng vòng lặp.

using System;
using System.Text;
using System.Text.RegularExpressions;
static class WordCount
{ 
// hàm đếm từ sử dụng regular expression chính xác, đơn giản hơn
// Bạn truyền vào một tham số tên là “textIn” xâu bạn muốn đếm từ
    static public int CountRegex(string textIn)
    {
        MatchCollection collection = Regex.Matches(textIn, @"[\S]+");
        return collection.Count;
    }
 
// Hàm này sử dụng dấu cách và phép phân tích chữ cái
    static public int Count(string str)
    {
        int c = 0;
        for (int i = 1; i < str.Length; i++)
        {
            if (char.IsWhiteSpace(str[i - 1]) == true)
            {
                if (char.IsLetterOrDigit(str[i]) == true ||
                    char.IsPunctuation(str[i]))
                {
                    c++;
                }
            }
        }
        if (str.Length > 2)
        {
            c++;
        }
        return c;
    }
}

Cả 2 hàm trên đều có đối truyền vào là xâu và trả về kết quả là một số nguyên chứa các từ trong xâu đó.Phương thức sử dụng Regex là phương thức tối ưu nhất.

Các bạn có thể so sánh thời gian làm việc của 2 hàm này với cách làm của Microsoft office.

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
ca do bong da online
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.