String.prototype.substr()

Souhrn

Metoda  substr() vrací znaky řetězce od počítečního indexu start o určité délce length.

Syntaxe

str.substr(start[, length])

Parametry

start
Index počátku čtení.
length
Délka znaků k přečtení.

Popis

start je index znaku. Indexem prvního znaku v řetězci je 0 a index posledního je o 1 méně než je délka řetězce. substr začíná číst znaky na indexu start a čte právě length znaků. (když se dostane ke konci řetězce, tak se automaticky ukončí a tak vrátí i méně znaků než je velikost length)

Když je start kladné a je větší a nebo rovno délce řetězce, substr vrací prázdný řetězec.

Když je start záporný, bere se to jako index od konce řetězce. Když je start záporný a abs(start) je větší než délka řetězce, substr použije 0 jako počáteční index. Poznámka: popsané zacházení se zápornými hodnotami v argumentu start není podporováno v Microsoft JScript.

Když je length 0 nebo záporné čílo, substr vrací prázdný řetězec. Když je argument length vynechaný, substr čte až do konce řetězce.

Příklady

Příklad: Použití substr

var str = "abcdefghij";

console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc
console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi
console.log("(-3): "     + str.substr(-3));    // (-3): hij
console.log("(1): "      + str.substr(1));     // (1): bcdefghij
console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
console.log("(20, 2): "  + str.substr(20,2));  // (20, 2):

Polyfill

Microsoft JScript nepodporuje záporné hodnoty počátečního indexu. Když si přejete použít tuto vlastnost, můžete použít následující polyfill.

// 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);
}

Specifikace

Specifikace Stav Komentář
ECMAScript 3rd Edition. Standard Definováno v (informative) Compatibility Annex B.
Implemented in JavaScript 1.0
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.substr' in that specification.
Standard Definováno v (informative) Compatibility Annex B
ECMAScript 6 (ECMA-262)
The definition of 'String.prototype.substr' in that specification.
Release Candidate Definováno v (normative) Annex B for Additional ECMAScript Features for Web Browsers

Kompatibilita v prohlížečích

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Základní podpora (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Základní podpora (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Poznámka: Až do verze 3.6, měl Firefox bug, který způsoboval, že substr vrací prázdný řetězec, když argument length byl nastaven jako undefined.

 

Související

Štítky a přispěvatelé do dokumentace

 Přispěvatelé této stránky: PageOnline
 Poslední aktualizace od: PageOnline,