Home > database >  Capitalise first word in a sentence seperated by dots javascript
Capitalise first word in a sentence seperated by dots javascript

Time:10-26

Using either a for or while loop, but without using Regex, I have to capitalise the first word in a sentence, in a string. Sentences are seperated by dots.

Currently I have the following

<p id="tekst">This is an. Example text. To showcase. What i want</p>

function highlight()
{
var text = document.getElementById("tekst").innerHTML;
//split the above string into an array of strings 
//whenever a blank space is encountered

let arr = text.split(" ");

//loop through each element of the array and capitalize the first letter.

for (var i = 0; i < arr.length; i  ) {
    arr[i] = arr[i].charAt(0).toUpperCase()   arr[i].slice(1);

}

//Join all the elements of the array back into a string 
//using a blankspace as a separator 
const str2 = arr.join(" ");
console.log(str2);
}

What this currently does, is capitalise the first letter in a word. So the text example would be

This Is An. Example Text. To Showcase. What I Want

The desired result is

THIS is an. EXAMPLE text. TO showcase. WHAT i want

CodePudding user response:

I hope the commented code below is helpful:

function highlight() {
  var text = document.getElementById("tekst").innerHTML;

  let arr = text.split(". ");

  let newSentence = ''

  //loop through each element of the array and capitalize the first letter.

  for (var i = 0; i < arr.length; i  ) {
    //splitting words
    const words = arr[i].split(' ')
    //getting the first word and capitalise it
    words[0] = words[0].toUpperCase()
    //removing the first word from the array and adding the rest of the words to newSentence and adding '. ' to the end of sentence
    newSentence  = words.join(' ')   '. '
  }

  //trim the sentence to remove any space in the end
  newSentence = newSentence.trim()

  console.log(newSentence);
}

CodePudding user response:

You have to split on . first than on (space) this way you get a array than only loop through

function highlight() {
  var text = document.getElementById("tekst").innerHTML;
  //split the above string into an array of strings 
  //whenever a blank space is encountered along with full stop('.')
  let arr = text.split(". ");
  let arr2;
  let fullSentence = '';
  
  //loop through each element of the array and capitalize the first letter.
  for (var i = 0; i < arr.length; i  ) {
    arr2 = arr[i].split(" ");
    arr2[0] = arr2[0].toUpperCase();
    
    //get all values from array2 and than join them with a space and end them with '.' . As this is looping so value will be saved in fullSentence and with ` ` sign each subsequent value will be joined with previous one
    fullSentence  = arr2.join(' ')   '. '
  }
  console.log(fullSentence);
}
highlight();// for automatic run of function
<p id="tekst">This is an. Example text. To showcase. What i want</p>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

For loop is always a pain for me so taken help from @Elson Ramos

CodePudding user response:

How about something like this ?

function highlight() {
    var text = "This is an. Example text. To showcase. What i want";
    //split the above string into an array of strings 
    //whenever a blank space is encountered

    let arr = text.split(".");

    //loop through each element of the array and capitalize the first letter.

    arr.forEach((string, index) => {
        let sep = string.trim().split(" ");
        sep[0] = sep[0].toUpperCase()
        arr[index] = sep.join(" ");
    });

    //Join all the elements of the array back into a string 
    //using a blankspace as a separator 
    const str2 = arr.join(". ");
    console.log(str2);
}

CodePudding user response:

Hopefully something like this helps!

function formatSentence(sentence) {
  const words = sentence.split(" ");
  const firstWord = words.shift().toUpperCase();
  return [firstWord, ...words.map(w => w.toLowerCase())].join(" ");
}

function formatParagraph(str) {
  const sentences = str.split(". ");
  const processed = sentences.map(formatSentence);
  return processed.join(". ");
}

console.log(
  formatParagraph("This Is An. Example Text. To Showcase. What I Want")
);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related