Strings

Declarar Strings, Strings multilinha, construção de Strings, concat vs template Strings. Operações básicas: length, indexOf, substring, replace, trim[ ], charAttoUpperCase(), toLowerCase().

O que são Strings

Strings representam um texto qualquer. Em Javascript, strings são um tipo e não possuem tamanho pré-definido. Além disso, não é necessário alocar memória para criar uma String já que isso é feito automaticamente ao declará-la.

Declarando uma String

Strings são declaradas entre aspas simples '' ou duplas " ":

let my_string = "Exemplo de string"
let other_string = 'Outro exemplo'

Não há regra para utilizar uma ou outra. No geral, Strings de aspas simples deixam o código menos poluído. Entretanto, aspas duplas são mais práticas para textos em inglês, nos quais certas contrações (por exemplo, is para 's) requerem aspas simples, o que quebraria Strings abertas por aspas simples.

let text = "it's a good idea to use double quotes for english text."

\n, \t e caractere de escape

Strings possuem caracteres especiais para formatação. Por exemplo, \n, que pula uma linha, e \t, que força uma tabulação.

Ainda é possível escapar carateres especiais utilizando \ , impedindo seu comportamento padrão. Por exemplo:

  • Imprimir, literalmente, o caractere \n (Que normalmente imprimiria uma quebra de linha) com \\n

  • Imprimir, literalmente, o caractere \t (Que normalmente uma tabulação) com \\t

  • Evitar que que ' feche uma string aberta por aspas simples com \'

let not_escaped = "O caractere \n pula linhas!"
let escaped = "O caractere \\n pula linhas!"

console.log(not_escaped)
console.log(escaped)

Acessar caracteres de Strings

É possível acessar caracteres de strings utilizando o operador []

let my_string = 'abcde'
console.log(my_string[2]) // Imprime c

Caracteres em uma Strings são indexados a partir de 0.

Concatenando Strings

O operador + concatena duas strings:

let name = 'maria'
let surname = 'gonçalves'


let full_name = name + " " + surname // " " espaça as palavras 

console.log(full_name) // Imprime maria gonçalves

É inconveniente utilizar o operador + para gerar strings complexas. A melhor maneira de fazer isto é utilizar template strings.

Template Strings

São definidas entre crases ``. É possível montar strings a partir de variáveis ou retorno de expressões Javascripts notadas entre ${}:

let name = 'maria'
let surname = 'gonçalves'

let full_name = `${name} ${surname}`

console.log(full_name) // Imprime maria gonçalves
let radius = 5
let PI = 3.14

console.log(`A área do círculo de raio ${radius} é ${PI*radius**2}`)

Mesmo sendo possível adicionar o retorno de qualquer expressão entre ${}, ainda é uma boa prática armazenar cálculos em variáveis com nomes descritivos:

let radius = 5
let PI = 3.14
let area = PI*radius**2
console.log(`A área do círculo de raio ${radius} é ${area}`)

length: Comprimento de uma string

O atributo .lengthde uma string retorna seu comprimento..

let my_string = 'uma frase longuíssima'

console.log(my_string.length) // Imprime 21 

É possível utilizar length para iterar sobre uma string por meio de um for carectere a caractere:

let my_string = 'uma frase longuíssima'

for(let i = 0; i < my_string.length; i++){
    console.log(my_string[i])
} // Imprime 21 linhas, cada uma com um caractere da string.

Imutabilidade de Strings

Ao contrário de outras linguagens, Strings são imutáveis em Javascript. Isso significa que não é possível modificar um caractere específico ao acessá-lo com o operador [ ].

A tática adotada é sempre criar uma nova string e atribuí-la à variável desejada.

replace()

Substitui a primeira ocorrência de uma substring por outra em uma string. my_string.replace(old_substr, new_substr).

let my_string = 'o.rato.roeu.a.roupa.do.rei.de.roma'
my_string = my_string.replace('.', ' ')
console.log(my_string)
// Imprime: o rato.roeu.a.roupa.do.rei.de.roma

replaceAll()

Substitui todas as ocorrências de uma substring por outra em uma string. my_string.replace_all(old_substr, new_substr)

let my_string = 'o.rato.roeu.a.roupa.do.rei.de.roma'
my_string = my_string.replaceAll('.', ' ')
console.log(my_string) 
// Imprime: o rato roeu a roupa do rei de roma

IMPORTANTE: Novas funcionalidades do Javascript não são implementadas ao mesmo tempo em todos os Browsers. replaceAll AINDA NÃO FUNCIONA EM TODOS OS NAVEGADORES! Em especial, versões inferiores à 85 do Google Chrome não implementaram o método ainda.

Em situações como esta, não vale a pena economizar algumas linhas de código a custo de gerar um bug que certamente afetará muitos usuários. A preferência é por código portátil, que funcione em diversos navegadores.

split() e join() - a MANEIRA RECOMENDADA de substituir substrings

O método split quebra uma string em um array, utilizando old_substr como separador:

'o.rato.roeu.a.roupa.do.rei'.split('.')
// retorna ["o", "rato", "roeu", "a", "roupa"]

O método join aglutina um array de strings em uma única string, utilizando new_substr como aglutinador:

["o", "rato", "roeu", "a", "roupa", "do", "rei"].join(' ')
// retorna 'o rato roeu a roupa do rei'

É possível utilizar os métodos separadamente, mas é comum utilizá-los um logo após o outro:

my_str = 'o.rato.roeu.a.roupa.do.rei'
old_substr = "."
new_substr = " " 

my_str = my_str.split(old_substr).join(new_substr)
//retorna 'o rato roeu a roupa do rei'

Os métodos split e join são amplamente implementados em diversos browsers. Portanto, esta maneira deve ser priorizada.

indexOf()

Retorna o índice da primeira ocorrencia de uma substr em my_str. Caso não exista alguma ocorrência, retorna -1.

'Olá, mundo!'.indexOf('mu') // Retorna 5

substring() e substituir caractere em um índice específico

Infelizmente, ainda não existe função nativa que permita modificar um caractere em um index específico de uma string. A estratégia atual é gerar duas substrings, uma anterior e outra posterior ao index desejado, e então concatená-las com a nova substring no meio.

O método .substring(start, end) permite gerar substrings a partir de índices.

A seleção da substring é fechada em start mas aberta em end, semelhante ao [ ) da matemática.

let my_str = '01234567'
my_str.substring(2, 5)
// Retorna "234"

Em suma, o caractere no índice inicial é incluído mas o no índice final não.

Caso end não seja passado como argumento, .substring o define como my_str.length + 1 . Ou seja, retorna de start até o final da string, incluindo o último caractere.

let my_str = '01234567'
my_str.substring(5)
// retorna "567"

A estratégia consiste em concatenar a substring anterior ao índice, a nova substring e a substring posterior ao índice:

let my_str = 'abcde'
let new_substr = 'Z'
let index = 2

let substr_start = my_str.substring(0, index) // Retorna 'ab'
let substr_end = my_str.substring(index + 1) // Retorna 'de'

my_str = substr_start + new_substr + substr_end
// Retorna abZde

trim()

Remove espaços em branco e tabulações do início e fim da string.

let my_string = "      abcde     "
console.log(my_string) // imprime "      abcde     "
console.log(my_string.trim()) // imprime "abcde"

toUpperCase() e toLowerCase()

Passam todos os caracteres da string para letra maiúscula (toUpperCase) ou minúscula (toLowerCase).

let my_string = 'TeXt'
my_string.toLowerCase() // retorna 'text'

Last updated