Insert a string at a specific index

前端 未结 18 710
眼角桃花
眼角桃花 2020-11-22 14:02

How can I insert a string at a specific index of another string?

 var txt1 = \"foo baz\"

Suppose I want to insert \"bar \" after the \"foo

相关标签:
18条回答
  • 2020-11-22 14:38

    another solution, cut the string in 2 and put a string in between.

    var str = jQuery('#selector').text();
    
    var strlength = str.length;
    
    strf = str.substr(0 , strlength - 5);
    strb = str.substr(strlength - 5 , 5);
    
    jQuery('#selector').html(strf + 'inserted' + strb);
    
    0 讨论(0)
  • 2020-11-22 14:39

    I know this is an old thread, however, here is a really effective approach.

    var tn = document.createTextNode("I am just  to help")
    t.insertData(10, "trying");
    

    What's great about this is that it coerces the node content. So if this node were already on the DOM, you wouldn't need to use any query selectors or update the innerText. The changes would reflect due to its binding.

    Were you to need a string, simply access the node's text content property.

    tn.textContent
    #=> "I am just trying to help"
    
    0 讨论(0)
  • 2020-11-22 14:39
    1. Instantiate an array from the string
    2. Use Array#splice
    3. Stringify again using Array#join

    The benefits of this approach are two-fold:

    1. Simple
    2. Unicode code point compliant

    const pair = Array.from('USDGBP')
    pair.splice(3, 0, '/')
    console.log(pair.join(''))

    0 讨论(0)
  • 2020-11-22 14:41

    This is basically doing what @Base33 is doing except I'm also giving the option of using a negative index to count from the end. Kind of like the substr method allows.

    // use a negative index to insert relative to the end of the string.
    
    String.prototype.insert = function (index, string) {
      var ind = index < 0 ? this.length + index  :  index;
      return  this.substring(0, ind) + string + this.substr(ind);
    };
    

    Example: Let's say you have full size images using a naming convention but can't update the data to also provide thumbnail urls.

    var url = '/images/myimage.jpg';
    var thumb = url.insert(-4, '_thm');
    
    //    result:  '/images/myimage_thm.jpg'
    
    0 讨论(0)
  • 2020-11-22 14:43

    Just make the following function:

    function insert(str, index, value) {
        return str.substr(0, index) + value + str.substr(index);
    }
    

    and then use it like that:

    alert(insert("foo baz", 4, "bar "));
    

    Output: foo bar baz

    It behaves exactly, like the C# (Sharp) String.Insert(int startIndex, string value).

    NOTE: This insert function inserts the string value (third parameter) before the specified integer index (second parameter) in the string str (first parameter), and then returns the new string without changing str!

    0 讨论(0)
  • 2020-11-22 14:44

    Using slice

    You can use slice(0,index) + str + slice(index). Or you can create a method for it.

    String.prototype.insertAt = function(index,str){
      return this.slice(0,index) + str + this.slice(index)
    }
    console.log("foo bar".insertAt(4,'baz ')) //foo baz bar

    Splice method for Strings

    You can split() the main string and add then use normal splice()

    String.prototype.splice = function(index,del,...newStrs){
      let str = this.split('');
      str.splice(index,del,newStrs.join('') || '');
      return str.join('');
    }
    
    
     var txt1 = "foo baz"
    
    //inserting single string.
    console.log(txt1.splice(4,0,"bar ")); //foo bar baz
    
    
    //inserting multiple strings
    console.log(txt1.splice(4,0,"bar ","bar2 ")); //foo bar bar2 baz
    
    
    //removing letters
    console.log(txt1.splice(1,2)) //f baz
    
    
    //remving and inseting atm
    console.log(txt1.splice(1,2," bar")) //f bar baz

    Applying splice() at multiple indexes

    The method takes an array of arrays each element of array representing a single splice().

    String.prototype.splice = function(index,del,...newStrs){
      let str = this.split('');
      str.splice(index,del,newStrs.join('') || '');
      return str.join('');
    }
    
    
    String.prototype.mulSplice = function(arr){
      str = this
      let dif = 0;
      
      arr.forEach(x => {
        x[2] === x[2] || [];
        x[1] === x[1] || 0;
        str = str.splice(x[0] + dif,x[1],...x[2]);
        dif += x[2].join('').length - x[1];
      })
      return str;
    }
    
    let txt = "foo bar baz"
    
    //Replacing the 'foo' and 'bar' with 'something1' ,'another'
    console.log(txt.splice(0,3,'something'))
    console.log(txt.mulSplice(
    [
    [0,3,["something1"]],
    [4,3,["another"]]
    ]
    
    ))

    0 讨论(0)
提交回复
热议问题