Home > OS >  Extract the first occurence from a string
Extract the first occurence from a string

Time:12-01

I have a div with a contentEditable attribute and I struggle to extract the first text occurence from a string.

I am using innerHTML to get the text from it( I need to use it, can not use innerText or textContent) and it comes with a lot of <br>.

The string will be something like this:

'<br> This is some text <br> <br> Another piece of text'. I need only the text('This is some text') without <br>.

The string will always have <br> in it and the place of the <br> may vary.

I tried using the replaceAll('<br>', '') and it returns 'This is some text Another piece of text' but I need only the first occurence 'This is some text'.

CodePudding user response:

You can use string.split() to divvy up the content by <br>, then run that through a simple filter that will remove any empty items in the array, and finally choose the first item in the array, which will be the text you want.

let fragment = document.querySelector('div.content').innerHTML.split('<br>').filter(a => a.trim())[0].trim() ;
console.log(fragment);
<div class='content'>
<br> 
<br> <br> 
This is some text <br> 
<br>
<br> This is some more text <br> 
</div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

Try

function getFirstNonBlankSubstring(text, separator) {
  const array = text.split(separator);
  for (const substring of array) {
    if (substring.trim()) {
      return substring;
    }
  }
}

getFirstNonBlankSubstring(element.innerHTML, '<br>') should give you what you need as long as you can count on the <br> tags looking exactly like that.

If you can't, you may need to walk the DOM to find text nodes.

CodePudding user response:

You can doit like this

//get the text and remove white space from left
var readText = document.getElementById("content").textContent.trimLeft();

//How many splits you want out    
var freeSpaces = 3;
//
var splittext = readText.split(' ');
var newText = splittext.slice(0, freeSpaces);

//final text
var finalText = newText.join(' ');
  • Related