--- title: String slug: Web/JavaScript/Reference/Global_Objects/String tags: - JavaScript - Reference - String translation_of: Web/JavaScript/Reference/Global_Objects/String ---
{{JSRef("Global_Objects", "String")}}
O objeto global String é um construtor para strings, ou uma sequência de caracteres.
As formas literais de declaração de String são:
'string text' "string text" "中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어"
Além da forma regular, de caracteres de impressão, caracteres especiais podem ser codificados usando a escape notation (notação com barra invertida):
| Codigo | Saida |
|---|---|
| \0 | o caractere NULL |
| \' | aspas simples |
| \" | aspas duplas |
| \\ | barra invertida |
| \n | nova linha |
| \r | carriage return |
| \v | tab vertical |
| \t | tab |
| \b | backspace |
| \f | form feed |
| \uXXXX | unicode codepoint |
| \xXX | the Latin-1 character |
Ou, usando o objeto global String diretamente:
String(thing) new String(thing)
thingStrings são úteis para guardar dados que podem ser representados em forma de texto. Uma das operações mais usadas nas strings é checar seu {{jsxref("String.length", "tamanho")}}, para construir e concatená-las usando os operadores + e +=, checando pela existência ou posição de substrings com o método {{jsxref("String.indexOf", "indexOf")}} , ou extrair substrings com o método {{jsxref("String.substring", "substring")}}.
Há duas maneiras de acessar um caractere individual em uma string. A primeira é o método {{jsxref("String.charAt", "charAt")}}:
return 'cat'.charAt(1); // returns "a"
A outra maneira (introduzido no ECMAScript 5) consiste em tratar a string como um objeto Array-like, onde os caráteres individuais correspondem a um índice numérico:
return 'cat'[1]; // returns "a"
Para acesso de caracteres usando uma notação de colchetes, tentando deletar ou designar um valor a estas propriedades não haverá sucesso. As propriedades envolvidas não são nem escritas ou configuráveis. (Veja {{jsxref("Object.defineProperty")}} para mais informações.)
Desenvolvedores de C têm a função strcmp() para comparar strings. No JavaScript, basta usar o operador maior que e menor que:
var a = "a"; var b = "b"; if (a < b) // verdadeiro print(a + " é menor que " + b); else if (a > b) print(a + " é maior que " + b); else print(a + " e " + b + " são iguais.");
Um resultado similar pode ser alcançado usando o método {{jsxref("String.localeCompare", "localeCompare")}} herdado pelas instâncias de String.
Note que o JavaScript distingue entre objetos String e valores de string primitivas. (O mesmo é válido para {{jsxref("Global_Objects/Boolean", "Boolean")}} e {{jsxref("Global_Objects/Number", "Numbers")}}.)
Strings literais (definidas por aspas duplas ou aspas simples) e strings retornadas da chamada da função String fora do contexto de uma função construtora (sem o uso da palavra chave new) são strings primitivas. O JavaScript converte automaticamente strings primitivas para objetos do tipo String, por isso é possível utilizar os métodos do objeto String através de strings primitivas. Em contextos onde um método é invocado de uma string primitiva ou uma propriedade é procurada, o JavaScript irá criar um objeto com a string primitiva e executar o método ou acessar a propriedade procurada.
var s_prim = "foo"; var s_obj = new String(s_prim); console.log(typeof s_prim); // Loga "string" console.log(typeof s_obj); // Loga "object"
String primitivas e objetos String também dão resultados diferentes quando usado {{jsxref("Global_Objects/eval", "eval")}}. Primitivas passadas para eval são tratadas como código fonte; Objetos String são tratados como todos os outros objetos são, retornando o objeto. Por exemplo:
s1 = "2 + 2"; // cria uma string primitiva
s2 = new String("2 + 2"); // cria um objeto de String
console.log(eval(s1)); // retorna o número 4
console.log(eval(s2)); // retorna a string "2 + 2"
Por estas razões, o código pode quebrar quando encontra objetos String quando espera na verdade uma string primitiva, apesar de que geralmente autores não precisam se preocupar com a distinção.
Um objeto String pode ser convertido sempre para sua contraparte primitiva com o método {{jsxref("String.valueOf", "valueOf")}}.
console.log(eval(s2.valueOf())); // retorna o número 4
StringView – a C-like representation of strings based on typed arrays.Métodos genéricos de StringsMétodos de instância String também estão disponíveis no Firefox a partir de JavaScript 1.6 (embora não faça parte dos padrões ECMAScript) no objeto String para aplicar métodos String a qualquer objeto:
var num = 15; alert(String.replace(num, /5/, '2'));
Genéricos também estão disponíveis em métodos {{jsxref("Global_Objects/Array", "Array")}}.
O seguinte é uma implementação para fornecer suporte a navegadores sem suporte:
/*globals define*/
// Assume que todos os métodos de instância String fornecidos
// já presentes (podem ser usadas implementações para este se não disponível)
(function () {
'use strict';
var i,
// Nós também poderíamos construir o array de métodos com os seguintes,
// mas o método getOwnPropertyNames() não é implementável:
// Object.getOwnPropertyNames(String).filter(function (methodName)
// {return typeof String[methodName] === 'function'});
methods = [
'quote', 'substring', 'toLowerCase', 'toUpperCase', 'charAt',
'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith',
'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase',
'toLocaleUpperCase', 'localeCompare', 'match', 'search',
'replace', 'split', 'substr', 'concat', 'slice'
],
methodCount = methods.length,
assignStringGeneric = function (methodName) {
var method = String.prototype[methodName];
String[methodName] = function (arg1) {
return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
};
};
for (i = 0; i < methodCount; i++) {
assignStringGeneric(methods[i]);
}
}());
String{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Propriedades')}}
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Métodos_não_relacionados_ao_HTML')}}
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Métodos_de_envoltório_HTML')}}
É possível usar String como uma alternativa "mais segura" {{jsxref("String.toString", "toString")}}, como embora normalmente ainda chama o toString subjacente, também funciona para null e undefined. Por exemplo:
var outputStrings = [];
for (let i = 0, n = inputValues.length; i < n; ++i) {
outputStrings.push(String(inputValues[i]));
}
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 1st Edition. | Standard | Definições iniciais. |
| {{SpecName('ES5.1', '#sec-15.5', 'String')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-string-objects', 'String')}} | {{Spec2('ES6')}} |
{{ CompatibilityTable() }}
| Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 0.2 | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
| Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suporte básico | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |