11

How would I insert something before the last occurrence of a specific character?

if (statement) insert " again" into string before last "<";

2 Answers 2

20

You can use lastIndexOf() with substring():

var str="Hello planet earth, you are a great planet.";
var n=str.lastIndexOf("planet");
var str2 = str.substring(0,n)+" again "+str.substring(n);
console.log(str2); // Hello planet earth, you are a great  again planet. 

As a nice function:

function insertBeforeLastOccurrence(strToSearch, strToFind, strToInsert) {
    var n = strToSearch.lastIndexOf(strToFind);
    if (n < 0) return strToSearch;
    return strToSearch.substring(0,n) + strToInsert + strToSearch.substring(n);    
}

var str ="This <br> is another <br> string <br> example.";
var newStr = insertBeforeLastOccurrence(str, "<", " again");
console.log(newStr); // This <br> is another <br> string  again<br> example.

Or as a String method:

String.prototype.insertBeforeLastOccurrence = function(strToFind, strToInsert) {
    var n = this.lastIndexOf(strToFind);
    if (n < 0) return this.toString();
    return this.substring(0,n) + strToInsert + this.substring(n);    
}

var str ="This <br> is another <br> string <br> example.";
console.log(str.insertBeforeLastOccurrence("<", " again"));
// Output: This <br> is another <br> string  again<br> example.
console.log(str.insertBeforeLastOccurrence("w00t", " again")); // wont find
// Output: This <br> is another <br> string <br> example.
Sign up to request clarification or add additional context in comments.

Comments

5

You can get the last occurrence of a specified string using lastIndexOf(str), which is a member function of any String or string object. Then you can do something like this:

var idx = mystr.lastIndexOf("<");
if (idx > -1)
  var outval = mystr.substr(0, idx) + " again" + mystr.substr(idx);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.