Công cụ Cắt Ngắn Văn Bản

Cắt ngắn văn bản đến giới hạn ký tự hoặc từ với hậu tố có thể tùy chỉnh.

Cách hoạt động

  1. Dán văn bản của bạn: nhập hoặc dán bất kỳ văn bản nào vào trường, bài viết, mô tả, bài đăng xã hội hoặc bất kỳ nội dung nào để rút ngắn.
  2. Đặt giới hạn: chọn giới hạn ký tự hoặc từ phù hợp với nền tảng mục tiêu của bạn (ví dụ 160 cho meta description, 280 cho Twitter).
  3. Sao chép kết quả: văn bản đã cắt ngắn xuất hiện tức thì. Nhấp Sao chép để lấy phiên bản rút gọn, sẵn sàng sử dụng.

Tại sao sử dụng trình cắt ngắn văn bản?

Mỗi nền tảng có giới hạn độ dài, Twitter, meta description, các trường cơ sở dữ liệu, thông báo và SMS đặt giới hạn ký tự nghiêm ngặt. Cắt ngắn thủ công thường cắt vụng về giữa một từ hoặc để lại dấu câu treo. Công cụ này cắt ngắn thông minh ở ranh giới từ và cho phép xem trước chính xác kết quả trong giới hạn của bạn, tiết kiệm thời gian và tránh lỗi định dạng.

Tính năng

Câu hỏi thường gặp

Nó có cắt giữa từ không?

Không. Trình cắt ngắn cắt ở ranh giới từ gần nhất trước giới hạn, để đầu ra luôn kết thúc bằng một từ hoàn chỉnh. Điều này giữ cho văn bản đã cắt ngắn của bạn dễ đọc và gọn gàng.

Tôi có thể sử dụng nó cho meta description không?

Có. Đặt giới hạn ở 155–160 ký tự cho meta description Google, hoặc 120 ký tự để cắt ngắn chặt chẽ hơn. Công cụ hiển thị bộ đếm ký tự của bạn theo thời gian thực để tinh chỉnh kết quả.

Điều gì xảy ra với các ký tự đặc biệt và emoji?

Các ký tự đặc biệt và emoji được giữ nguyên. Lưu ý rằng emoji có thể đếm là 2 ký tự trên một số nền tảng, hãy xác minh số đếm cuối cùng trên nền tảng mục tiêu của bạn nếu độ chính xác quan trọng.

«Một ký tự» thực sự có nghĩa là gì

Người dùng nhìn thấy một «ký tự» trong khi JavaScript nhìn thấy ba giá trị. Chuỗi «👨‍👩‍👧‍👦» (emoji gia đình bốn người) là một cụm grapheme, bảy điểm mã Unicode được nối bởi Zero-Width Joiner (U+200D), và mười một đơn vị mã UTF-16. Đó là lý do tại sao trong JavaScript "👨‍👩‍👧‍👦".length === 11. Định nghĩa có thẩm quyền sống trong Phụ lục Tiêu chuẩn Unicode #29 «Phân đoạn Văn bản Unicode» (phiên bản hiện tại 15.0, tháng 9 năm 2022), xác định ranh giới cụm grapheme, ranh giới từ và ranh giới câu. JavaScript hiện đại tiết lộ UAX #29 thông qua Intl.Segmenter, được chuẩn hóa trong ECMAScript 2022 và được vận chuyển trong mọi trình duyệt kể từ Firefox 125 (tháng 4 năm 2024); Chrome có nó từ phiên bản 87 (tháng 11 năm 2020) và Safari từ 14.1 (tháng 4 năm 2021). Sử dụng new Intl.Segmenter('vi', { granularity: 'grapheme' }) để đếm theo cách con người đếm.

Giới hạn ký tự trên các nền tảng bạn vận chuyển đến

Ranh giới từ không chỉ là split(' ')

Trình cắt ranh giới từ ngây thơ chia đầu vào trên /\s+/ và cắt trước từ đầu tiên đẩy bạn vượt quá giới hạn. Điều đó hoạt động cho tiếng Anh. Nó thất bại trên tiếng Trung, Nhật, Hàn và Thái, không ai sử dụng khoảng trắng giữa các từ: toàn bộ đầu vào kết thúc như một «từ» duy nhất, vì vậy trình cắt hoặc giữ tất cả hoặc cắt tất cả. Tiếng Ả Rập sử dụng khoảng trắng nhưng nối các hình thức chữ cái theo cách thay đổi vị trí ranh giới. Intl.Segmenter với granularity: 'word' áp dụng thuật toán ranh giới từ UAX #29 và tạo ra các vết cắt chính xác cho mọi ngôn ngữ. Nó cũng phân biệt các đoạn «giống từ» (trả về isWordLike: true) từ các đoạn dấu câu và khoảng trắng, vì vậy bạn có thể tìm thấy ranh giới từ cuối cùng trước ngân sách ký tự của mình với một lần truyền qua các đoạn.

Cắt CSS: text-overflowline-clamp

Nếu mục tiêu là cắt về mặt thị giác trong khi giữ toàn bộ văn bản trong DOM (để nó vẫn có sẵn cho trình đọc màn hình, công cụ tìm kiếm và sao chép-dán), hãy sử dụng CSS. Cắt một dòng yêu cầu ba thuộc tính cùng nhau: overflow: hidden; white-space: nowrap; text-overflow: ellipsis;. text-overflow: ellipsis được định nghĩa trong Mô-đun CSS Basic User Interface Cấp 4 (W3C Candidate Recommendation tháng 8 năm 2021) và đã được vận chuyển trong mọi trình duyệt kể từ Firefox 7 (tháng 9 năm 2011); Internet Explorer 6 đã có nó từ tháng 8 năm 2001. Cắt nhiều dòng sử dụng display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;. Thuộc tính -webkit-line-clamp có từ WebKit 2009 và hiện được định nghĩa trong Mô-đun CSS Overflow Cấp 3 (W3C Working Draft). line-clamp không tiền tố được vận chuyển trong Safari 18 (tháng 9 năm 2024) và Firefox 125 (tháng 4 năm 2024); luôn bao gồm dạng -webkit- làm dự phòng. Hạn chế quan trọng: Cắt CSS hoàn toàn mang tính trình bày. Văn bản đầy đủ vẫn trong mã nguồn HTML, vì vậy đoạn trích SEO, tóm tắt email và chỉ mục tìm kiếm do JS điều khiển đều thấy chuỗi không bị cắt.

Sai lầm phổ biến

Thêm câu hỏi thường gặp

Tại sao Twitter đếm URL của tôi là 23 ký tự ngay cả khi nó dài hơn nhiều?

Twitter gói mọi URL qua bộ rút gọn t.co của nó để phân tích và phát hiện lạm dụng, vì vậy nó tính phí mọi URL ở độ dài trường hợp xấu nhất của bộ rút gọn: 23 ký tự cho HTTPS. Nếu bạn viết một URL 100 ký tự, nó được tính là 23 trong giao diện Twitter. Quy tắc tương tự áp dụng cho siêu dữ liệu Twitter Card. Thư viện mã nguồn mở twitter-text (Twitter, MIT) triển khai quy tắc chính xác nếu bạn cần mô phỏng chính xác byte.

Công cụ này có tôn trọng các ngôn ngữ RTL như tiếng Ả Rập và Do Thái không?

Nội dung văn bản được bảo tồn bao gồm các điểm đánh dấu bidi (hai chiều) của nó. Cắt hoạt động trên các ký tự theo thứ tự logic, vì vậy cắt câu tiếng Ả Rập ở ký tự 100 sẽ cắt ở ký tự logic thứ 100 (cái mà trình đọc màn hình sẽ thông báo đầu tiên). Thứ tự hiển thị có thể đảo ngược về mặt thị giác do luồng phải sang trái, nhưng chuỗi cơ bản nhất quán.

Tại sao SMS bị cắt của tôi vẫn được chia thành ba phần ở 161 ký tự?

SMS sử dụng mã hóa GSM 7-bit cho văn bản chỉ tiếng Latin, vừa 160 ký tự trong một phân đoạn. Nhưng bất kỳ ký tự nào ngoài GSM-7, bao gồm dấu nháy uốn «thông minh» từ tự động sửa (U+2018 / U+2019), dấu chấm lửng Unicode (U+2026), hoặc emoji, buộc toàn bộ thông điệp đến mã hóa UCS-2 ở 70 ký tự mỗi phân đoạn. Nếu thông điệp 160 ký tự bị cắt của bạn chứa một dấu nháy thông minh, nhà cung cấp dịch vụ sẽ chia nó thành ba phần UCS-2 70 ký tự. Thay thế dấu nháy thông minh bằng dấu nháy ASCII cho SMS.

Tôi có thể cắt văn bản định dạng HTML mà không phá vỡ các thẻ không?

Không an toàn với một vết cắt đếm ký tự. Hoặc loại bỏ các thẻ HTML trước (qua DOMParser hoặc bộ phân tích phía máy chủ), cắt văn bản thuần, sau đó tùy chọn gói lại; hoặc sử dụng một trình cắt có ý thức về DOM đi qua cây nút và sao chép các tiền tố nút văn bản đầy đủ. Regex thuần trên chuỗi HTML không an toàn (HTML không phải là ngôn ngữ chính quy).

Có gì được gửi đến máy chủ không?

Không. Văn bản bạn dán, giới hạn bạn chọn, hậu tố bạn đặt và đầu ra bị cắt đều được xử lý trong JavaScript của trình duyệt của bạn. Không có cuộc gọi mạng nào được thực hiện và không có bản sao đầu vào của bạn được lưu trữ. Mở tab Mạng trong DevTools để xác minh.

Công cụ liên quan

Bộ đếm ký tự Công cụ Đếm Từ & Ký Tự Trực Tuyến Miễn Phí Công cụ Loại Bỏ Khoảng Trắng & Làm Sạch Văn Bản Bộ chuyển đổi trường hợp