Search code examples
javascriptxmlsubstring

Javascript Substring not working with special characters


Hi there I'm trying to use the following

sValue.substr(0,1000);

on the string

<ul class='ulIndentRight'><li><b>Altissimo Guesthouse</b> </li><li> Luxury Room With Queen Bed Rtid 1 </li><li> Extra</li><li>person Charges May App Superior Room 1 Queen Bedlayout </li><li> Bedroom Internet </li><li> Free Wifi Entertainment </li><li> Plasma Tv</li><li> Satellite Channels</li><li> And Dvd Playerfood </li><li> Drink </li><li> Refrigerator</li><li> Free Minibar Items</li><li> Coffee</li><li>tea Maker</li><li> And Free Bottled Waterbathroom </li><li> Private Bathroom</li><li> Bathtub Or Shower</li><li> Free Toiletries</li><li> And A Hair Dryerpractical </li><li> Safe</li><li> Desk</li><li> And Iron</li><li>ironing Board (on Request) Rollaway</li><li>extra Beds Available On Requestcomfort </li><li> Climate</li><li>controlled Air Conditioning And Daily Housekeepingnon</li><li>s

but it keeps on returning a character count of 1136

any ideas how to get only 1000 characters

Thanks


Solution

  • That's HTML special characters.

    I think the easiest way:

    1. you create a temporary element
    2. you put your string in the HTML of the element (innerHTML)
    3. you put the characters from this element with textContent in new string
    4. you make the count on this string

    let string = 
            "<ul class='ulIndentRight'><li><b>Altissimo Guesthouse</b> </li><li> Luxury Room With Queen Bed Rtid 1 </li><li> Extra</li><li>person Charges May App Superior Room 1 Queen Bedlayout </li><li> Bedroom Internet </li><li> Free Wifi Entertainment </li><li> Plasma Tv</li><li> Satellite Channels</li><li> And Dvd Playerfood </li><li> Drink </li><li> Refrigerator</li><li> Free Minibar Items</li><li> Coffee</li><li>tea Maker</li><li> And Free Bottled Waterbathroom </li><li> Private Bathroom</li><li> Bathtub Or Shower</li><li> Free Toiletries</li><li> And A Hair Dryerpractical </li><li> Safe</li><li> Desk</li><li> And Iron</li><li>ironing Board (on Request) Rollaway</li><li>extra Beds Available On Requestcomfort </li><li> Climate</li><li>controlled Air Conditioning And Daily Housekeepingnon</li><li>s";
            
                document.querySelector('.string').innerHTML = string;
    
      let string_div = document.querySelector('.string').textContent;
      charCount = Array.from(string_div).length;
      document.querySelector('.count').innerHTML = charCount;
      console.log(charCount);
    <div class="string" style="display:none">
    </div>
    
    <div class="count">
    </div>