cut out part of a string

前端 未结 8 1437
北荒
北荒 2021-02-18 16:17

Say, I have a string

\"hello is it me you\'re looking for\"

I want to cut part of this string out and return the new string, something like

8条回答
  •  醉话见心
    2021-02-18 16:48

    Just as a reference for anyone looking for similar function, I have a String.prototype.bisect implementation that splits a string 3-ways using a regex/string delimiter and returns the before,delimiter-match and after parts of the string....

    /*
          Splits a string 3-ways along delimiter.
          Delimiter can be a regex or a string.
          Returns an array with [before,delimiter,after]
    */
    String.prototype.bisect = function( delimiter){
      var i,m,l=1;
      if(typeof delimiter == 'string') i = this.indexOf(delimiter);
      if(delimiter.exec){
         m = this.match(delimiter);
         i = m.index;
         l = m[0].length
      }
      if(!i) i = this.length/2;
      var res=[],temp;
      if(temp = this.substring(0,i)) res.push(temp);
      if(temp = this.substr(i,l)) res.push(temp);
      if(temp = this.substring(i+l)) res.push(temp);
      if(res.length == 3) return res;
      return null;
    };
    
    /* though one could achieve similar and more optimal results for above with: */
    
    "my string to split and get the before after splitting on and once".split(/and(.+)/,2) 
    
    // outputs => ["my string to split ", " get the before after splitting on and once"]
    

    As stated here: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split

    If separator is a regular expression that contains capturing parentheses, then each time separator is matched the results (including any undefined results) of the capturing parentheses are spliced into the output array. However, not all browsers support this capability.

提交回复
热议问题