Làm thế nào để truncate file name mà vẫn dữ được extension của chúng (Phần 1)

Mở đầu Xin chào tất cả các bạn hôm nay mình sẽ giới thiệu cho các bạn cách truncate file name/text mà vẫn dữ được extension trên nhiều line. Hi vọng nó sẽ giúp ích cho các bạn. 1. Vấn đề hay gặp phải : Các bạn muốn nó hiển thị 2 line và vẫn

Mở đầu

Xin chào tất cả các bạn hôm nay mình sẽ giới thiệu cho các bạn cách truncate file name/text mà vẫn dữ được extension trên nhiều line. Hi vọng nó sẽ giúp ích cho các bạn.

1. Vấn đề hay gặp phải :

Các bạn muốn nó hiển thị 2 line và vẫn giữ đc phần extension, những phần bị truncate sẽ hiển thị dấu ‘…’ nhưng nó lại ra như thế này :
image.png

2. Cách khắc phục :

Mục tiêu là 2 line và truncate vẫn giữ được extension name nha các bạn.

Để giải quyết được vấn đề này thì có rất nhiều cách để giải quyết sẽ có một số cách sẽ phù hợp với một số bạn:

Cách 1: Mình dùng Tailwind nha :

<div className="min-h-[50px] break-all line-clamp-2">
    {name} // Tên file
</div>

Thì nó sẽ cho ra kết quả như thế này :

image.png

Ở đây như các bạn sẽ thấy nó đã hiển thị được 2 line rồi, UI không bị bể như trên nữa nhưng nó lại không đáp ứng được việc hiển thị extension ở cuối uhmmm…. vậy là không được rồi bây giờ qua cách 2 nha

Cách 2: Mình dùng chút JavaScript :

Ở đây mình sẽ có một hàm như sau :

const truncateText = (text: string, maxLength: number) => {
    if (text.length > maxLength) {
      return (
        text.substring(0, 20) +
        '...' +
        text.substring(text.length - 10, text.length)
      );
    }
    return text;
  };
  
 truncateText(name, 35)

Và kết quả sẽ ở đây :
image.png

Như chúng t thấy hiện tại nó đã được 2 line, có extension hiện đã đáp ứng đúng nhưng nếu nhìn kĩ thì sẽ thấy chưa max width mà đã truncate rồi như thế là không ổn rồi, rồi còn một số trường hợp nếu name chỉ chỉ chứa 1 ký tự nữa, nói thật ra cách thì này khá lúa :v

Cách 3: Sử dụng thư viện React-Text-Truncate :

Đây là Demo nhé các bạn.

Cách cài :

//npm
npm install react-text-truncate

//yarn
yarn add react-text-truncate

Cách sử dụng khá đơn giản :

<div className="min-h-[50px] mt-3 break-all">
    <TextTruncate
      line={2}
      truncateText={`...${removeExtension(name).slice(-3,)}.${getExtensionFile(name)}`}
      text={name}
    />
</div>

Kết quả nó sẽ như thế nay:
image.png

Bây giờ nhìn trong ổn phết đấy chứ nhỉ =)))

Ở đây sẽ có 2 hàm removeExtension() và hàm getExtensionFile()

Nếu muốn biết 2 hàm này từ đâu mà ra thì hãy đón xem phần 2 nha =))))

5 Kết luận

Hãy đón xem phần 2 với những hàm xử lý truncate text. Cảm ơn bạn đã đọc bài viết.

Nguồn: viblo.asia

Bài viết liên quan

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con

Khi nào nên dùng main, section, article, header, footer, và aside trong HTML5

HTML5 đã giới thiệu các thẻ ngữ nghĩa giúp cấu trúc nội dung web một cách có

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th