Lập trình C++ / C# — August 6, 2016 at 3:52 am

Cắt n ký tự đầu tiên của một chuỗi với C# như thế nào?

by

Bài viết này chúng tôi sẽ hướng dẫn các bạn giải quyết vấn đề cắt n ký tự đầu tiên của một chuỗi với C#. Hãy cùng nhau tham khảo nhé.

Khi lướt web nếu để ý bạn sẽ thấy một số trang hoặc diễn đàn có tiêu đề bài viết quá dài và họ không muốn trình bày tiêu đề bài đó thành nhiều hơn 1 dòng, và tiêu đề bài đó được cắt n ký tự đầu (giả sử 200) nhưng nếu đúng ký tự thứ 200 lại là ký tự nằm giữa 1 từ nào đó, như vậy nếu không giải quyết vấn đề thì số ký tự ta cắt sẽ có từ cuỗi không có ý nghĩa. Bạn tham khảo code sau đây để áp dụng:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string str1 = @“Với tinh thần chia sẻ, giao lưu và học hỏi với các
        bạn tôi lập website hmweb
        Chia sẻ là niềm vui. Chia sẻ những gì có thể cũng là
        một phần trong những sở thích của tôi.
        Tôi hy vọng qua hmweb bạn có thể tìm kiếm
        được những thông tin hữu ích cho các bạn”;
        string str2 = str1.CatChuoi(30);
    }
}
public static class StringExtensions
{
    /// <summary>
    /// Trả về phần đầu của chuỗi và đảm bảo đủ từ
    /// </summary>
    /// <param name=”s”></param>
    /// <param name=”length”>Số ký tự tối đa được cắt</param>
    /// <returns>String</returns>
    public static string CatChuoi(this string s, int length)
    {
        if (String.IsNullOrEmpty(s))
            throw new ArgumentNullException(s);
        var words = s.Split(new[] { ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);
        if (words[0].Length > length)
            throw new ArgumentException(“Từ đầu tiên dài hơn chuỗi cần cắt”);
        var sb = new StringBuilder();
        foreach (var word in words)
        {
            if ((sb + word).Length > length)
                return string.Format(“{0}…”, sb.ToString().TrimEnd(‘ ‘));
            sb.Append(word + ” “);
        }
        return string.Format(“{0}…”, sb.ToString().TrimEnd(‘ ‘));
    }
}

Giải thích qua về phương pháp trên ta thấy có 2 tham số đầu vào là chuỗi đầu vào s và length là số ký tự tối ta ta sẽ cắt (Tối đa nghĩa là nếu ký tự thứ length là khoảng trắng thí chuỗi cắt được có độ dài là length ngược lại sẽ lấy đến khoảng trắng cuối cũng trước length ). Chúng ta sử dụng String.Split để chia chuỗi ra mảng phân cách bởi khoảng trắng sau đó ta dùng vòng lặp (foreach) để xử lý chuỗi.

Trên đây chúng tôi đã hướng dẫn các bạn cách cắt n ký tự đầu tiên của một chuỗi với C#. Hy vọng sẽ mang lại cho các bạn những kiến thức bổ ích. Xin cám ơn!

Nguồn: p2share

Leave a Comment

Your email address will not be published. Required fields are marked *