substr

 

Summary

Returns the characters in a string beginning at the specified location through the specified number of characters.

Method of String
Implemented in JavaScript 1.0
ECMAScript Edition None, although ECMAScript 3rd Edition has a non-normative section suggesting uniform semantics

Syntax

string.substr(start[, length])

Parameters

start
Location at which to begin extracting characters.
length
The number of characters to extract.

Description

start is a character index. The index of the first character is 0, and the index of the last character is 1 less than the length of the string. substr begins extracting characters at start and collects length characters (unless it reaches the end of the string first, in which case it will return fewer).

If start is positive and is greater than or equal to the length of the string, substr returns an empty string.

If start is negative, substr uses it as a character index from the end of the string. If start is negative and abs(start) is larger than the length of the string, substr uses 0 as the start index. Note: the described handling of negative values of the start argument is not supported by Microsoft JScript .

If length is 0 or negative, substr returns an empty string. If length is omitted, substr extracts characters to the end of the string.

Compatibility

Microsoft's JScript does not support negative values for the start index. If you wish to make use of this feature, you can use the following compatibilty code to work around this bug:

// only run when the substr function is broken
if ('ab'.substr(-1) != 'b')
{
  /**
   *  Get the substring of a string
   *  @param  {integer}  start   where to start the substring
   *  @param  {integer}  length  how many characters to return
   *  @return {string}
   */
  String.prototype.substr = function(substr) {
    return function(start, length) {
      // did we get a negative start, calculate how much it is from the beginning of the string
      if (start < 0) start = this.length + start;
      
      // call the original function
      return substr.call(this, start, length);
    }
  }(String.prototype.substr);
}

Examples

Example: Using substr

Consider the following script:

// assumes a print function is defined
var str = "abcdefghij";
print("(1,2): "    + str.substr(1,2));
print("(-3,2): "   + str.substr(-3,2));
print("(-3): "     + str.substr(-3));
print("(1): "      + str.substr(1));
print("(-20, 2): " + str.substr(-20,2));
print("(20, 2): "  + str.substr(20,2));

This script displays:

(1,2): bc
(-3,2): hi
(-3): hij
(1): bcdefghij
(-20, 2): ab
(20, 2):

See also

slice, substring

 

Tags (1)

Contributors to this page: evilpie, Sheppy, kiteroa, Jd, MrWeeble, Mmorearty, Thorn, Nickolay, martijntje, Sephr, Julien.stuby, Ruakh, Waldo, Mgjbot, Potappo, Maian, Dria
Last updated by: martijntje,