1

I want to split a string when this one have more than 30 characters but i don't want any split words.

My code is actually working but i don't know if it could be better, i think that it could be more simple and faster.

let str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus laoreet ligula arcu, ut ullamcorper lacus porttitor in. Nulla consequat viverra cursus. Curabitur sit amet libero nec velit sagittis vulputate sit amet vel lorem. Nam consectetur quam est, non semper ipsum porttitor et. Pellentesque tempor eros eget urna efficitur, nec malesuada ipsum laoreet. Curabitur dictum eros quis semper ultrices. Aliquam nisl ante, sodales nec velit ut, ullamcorper bibendum dui. Nulla varius lectus nisi, sit amet posuere arcu porttitor eget. Suspendisse nec malesuada dui. Praesent varius nunc luctus sem interdum eleifend. Ut sed arcu gravida lacus vulputate commodo a nec sapien. Sed at quam rutrum, convallis lorem quis, vulputate nulla. Cras vitae congue turpis. Etiam vehicula lobortis felis, nec rhoncus ligula interdum nec. Curabitur turpis dolor, aliquet at ultrices et, ultrices cursus magna.";
function splitString(str){
 if(str.length>=30){
     let aux = str.split(" ");
  let printString = "";
  while(printString.length + aux[0].length + 1 <=30){
   printString += (aux.shift() + " ");
  }
  console.log(printString);
  splitString(aux.join(' '));
 }
 else{
  console.log(str);
 }
}
splitString(str);
Scath
  • 3,777
  • 10
  • 29
  • 40
KaSkuLL
  • 531
  • 6
  • 27
  • 1
    This may be more appropriate over at [codereview.stackexchange.com](https://codereview.stackexchange.com). [Here's their criteria](https://codereview.stackexchange.com/help/on-topic) for asking a question. – Andy Dec 09 '19 at 14:04
  • I think it can be more simple **OR** faster. your method is pretty straightforward (simple). – apple apple Dec 09 '19 at 14:07
  • for faster, I have some thoughts: 1. don't `shift`, it may be slow. 2. don't recursive, so you can reuse the splited words. 3. don't split at all, iterate though the characters (I'm not sure this would be faster in `js`, though, since split may be native code) – apple apple Dec 09 '19 at 14:10
  • 1
    Does this answer your question? [Split string at space after certain number of characters in Javascript](https://stackoverflow.com/questions/49836558/split-string-at-space-after-certain-number-of-characters-in-javascript) – Diogo Peres Dec 09 '19 at 14:10

1 Answers1

5

You just need a regex expression that returns an array with the splitted phrases.

Kudos for @Nick answer in here: Split string at space after certain number of characters in Javascript

 let str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus laoreet ligula arcu, ut ullamcorper lacus porttitor in. Nulla consequat viverra cursus. Curabitur sit amet libero nec velit sagittis vulputate sit amet vel lorem. Nam consectetur quam est, non semper ipsum porttitor et. Pellentesque tempor eros eget urna efficitur, nec malesuada ipsum laoreet. Curabitur dictum eros quis semper ultrices. Aliquam nisl ante, sodales nec velit ut, ullamcorper bibendum dui. Nulla varius lectus nisi, sit amet posuere arcu porttitor eget. Suspendisse nec malesuada dui. Praesent varius nunc luctus sem interdum eleifend. Ut sed arcu gravida lacus vulputate commodo a nec sapien. Sed at quam rutrum, convallis lorem quis, vulputate nulla. Cras vitae congue turpis. Etiam vehicula lobortis felis, nec rhoncus ligula interdum nec. Curabitur turpis dolor, aliquet at ultrices et, ultrices cursus magna.";

console.log( str.match(/.{1,29}(\s|$)/g) );
Diogo Peres
  • 1,302
  • 1
  • 11
  • 20