Computer >> Máy Tính >  >> Lập trình >> Javascript

Cách chia câu thành các khối có độ dài cố định mà không làm ngắt các từ trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi chứa văn bản của đoạn văn làm đối số đầu tiên và số kích thước đoạn làm đối số thứ hai.

Hàm sẽ thực hiện những việc sau -

  • ngắt chuỗi thành các đoạn có độ dài không lớn hơn kích thước đoạn (đối số thứ hai),

  • việc ngắt câu chỉ nên xảy ra ở khoảng trắng hoặc cuối câu (không nên ngắt đoạn aword).

Ví dụ - Nếu chuỗi đầu vào là -

const str = 'this is a string';
const chunkLength = 6;

Sau đó, đầu ra phải là -

const output = ['this', 'is a', 'string'];

Hãy để chúng tôi viết mã cho chức năng này -

Chúng tôi sẽ sử dụng một biểu thức chính quy để khớp với số ký tự được chỉ định. Sau khi khớp, chúng tôi sẽ quay ngược lại cho đến khi chúng tôi tìm thấy khoảng trắng hoặc phần cuối của chuỗi.

Ví dụ

Mã cho điều này sẽ là -

const size = 200;
const str = "This process was continued for several years for the deaf
child does not here in a month or even in two or three years the
numberless items and expressions using the simplest daily intercourse
little hearing child learns from these constant rotation and imitation the
conversation he hears in his home simulates is mine and suggest topics and
called forth the spontaneous expression of his own thoughts.";
const splitString = (str = '', size) > {
   const regex = new RegExp(String.raw`\S.{1,${size &minu; 2}}\S(?= |$)`,
   'g');
   const chunks = str.match(regex);
   return chunks;
}
console.log(splitString(str, size));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   'This process was continued for several years for the deaf child does
   not here in a month or even in two or three years the numberless items and
   expressions using the simplest daily intercourse little',
   'hearing child learns from these constant rotation and imitation the
   conversation he hears in his home simulates is mine and suggest topics and
   called forth the spontaneous expression of his own',
   'thoughts.'
]