JavaScript Substring: selecionando caracteres de uma string!

Uma das operações comuns da programação é a manipulação de palavras e caracteres. Isso pode ser feito com o objetivo de comparar informações, extrair dados digitados por quem está usando o sistema, processar dados de um formulário, bem como outras ações. Para essas funções, existe um termo específico para descrever um tipo primitivo e composto de dados: String.

Esse conceito varia de linguagem para linguagem, mas alguns padrões são comuns. Em diversas linguagens, existem métodos para selecionar caracteres específicos, por exemplo. Na parte lógica da programação web, é comum usar o JavaScript Substring para esse fim.

Neste artigo, vamos explorar um pouco mais esse método e trabalhar com detalhes suas aplicações, regras de sintaxe e muito mais. 

Veremos:

  • Quais as características de uma string?
  • Javascript Substring (): o que é e como funciona?
  • Como é a sintaxe do Substring?
  • Quais os 5 principais exemplos de uso do método Substring ()?
  • Como é a compatibilidade com navegadores?

Quais as características de uma string?

Antes de começarmos, vamos definir o que seria uma String. Em diversas linguagens, incluindo o JavaScript, uma String é inicialmente um tipo primitivo. Ou seja, é um tipo de dados integrado à linguagem que permite operações básicas, mas que não é como um objeto com métodos. 

Assim, permite a modelagem de algo do mundo real, como qualquer tipo de dado. Por exemplo, um tipo “int” representa um número, enquanto uma string representa uma cadeia de caracteres e símbolos.

Um tipo primitivo seria um tipo que não se comporta como um objeto em um paradigma de programação orientado a objetos, no entanto, ainda permite salvar informações em variáveis categorizadas. Desse modo, não é instância do programa com várias funções a serem realizadas, inclusive a de dividir e selecionar caracteres que mencionamos.

O grande destaque, no entanto, é que em JavaScript, as strings declaradas como tipo primitivo são automaticamente convertidas em objetos. Sendo assim, existe a possibilidade de trabalhar com essas funções e com o método que explicaremos com detalhes ao longo deste artigo. Nesse sentido, a String pode ser dissociada dos tipos comuns de dados (como int e bool) e considerada uma forma mais complexa, como um vetor.

Assim como um vetor, uma string é um conjunto de espaços de memória alocados sequencialmente sob um nome específico. Cada espaço na memória pode ser acessado por um índice, com uma contagem que começa sempre com 0, que é um valor que determina o começo em programação.

A diferença para um vetor é que uma string é especialmente uma sequência de caracteres, que, em programação, inclui tanto letras quanto números e símbolos especiais.

Substring

Sabendo o que é String, temos a definição de substring: uma sequência de caracteres dentro de uma sequência maior. Ou seja, cada caractere dentro de uma string já é uma substring dela e as combinações que podem ser feitas também são. 

Se escrevemos a frase “essa é uma string”, entendemos que “essa”, “essa é” e “é uma” são algumas das substrings da frase original. Como temos acesso a todos os elementos na memória, essas operações de identificação e seleção podem ser realizadas facilmente.

Em razão dessa facilidade, é possível realizar diversas funções com as strings na programação, tais como concatenação, acessar o tamanho da sequência de caracteres, realizar comparações entre duas strings, encontrar uma string dentro de outra, entre outras questões, como veremos em um tópico específico de aplicações. 

Por funcionar como um vetor, é possível também utilizar uma estrutura de loop para iterar os elementos de uma string e realizar alguma operação em todos os seus elementos. A lógica de muitos métodos de manipulação que existem aplica justamente essa abordagem. 

Muitos desses métodos, inclusive, são pré-programados nas bibliotecas padrão da linguagem e são fáceis de usar. Apenas requerem que a pessoa programadora faça uma chamada e estabeleça devidamente os parâmetros (valores passados para que o método realize alguma ação com eles). 

Para isso, no entanto, é preciso conhecer a documentação deles e saber como foram programados e o que é necessário para passar informações para eles. Nos próximos tópicos, apresentaremos uma parte da documentação do Substring e seus detalhes relevantes.

Javascript Substring (): o que é e como funciona?

O método Substring parte da lógica que explicamos nos parágrafos anteriores. O objetivo dele é permitir a seleção de caracteres dentro de uma string original de uma forma livre, de acordo com a necessidade de quem estiver programando. Assim, a partir de uma string maior, ele extrai uma string menor e a retorna como um resultado.

Ele faz isso a partir de dois índices especificados. Sempre que preciso, as pessoas programadoras podem simplesmente chamar o método como uma propriedade específica da string em que estiver trabalhando. Por exemplo: se temos uma String chamada “frase”, podemos fazer uma chamada com “frase.substring (indice, indice)”. 

Existem casos muito comuns em que a pessoa que está programando não tem informação sobre o número exato do índice de cada elemento. Nessas situações, podem ser usados métodos auxiliares, como o Length (para descobrir o tamanho de uma string) ou o IndexOf (para descobrir o índice em que está um determinado caractere).

O Substring é um método similar a outros que realizam a mesma função, porém com algumas diferenças. Os semelhantes são: o Javascript Split, o JavaScript Slice e o Substr. A principal distinção geralmente está na sintaxe desses métodos. 

Como é a sintaxe do Substring?

O Substring funciona com índices especificados, como já falamos. É importante destacar que ele requer uma ordem específica para esses números, embora se adapte bem a alguns erros. Por exemplo, o ideal é especificar na ordem inicial-final, como em “substring (posInicial, posFinal)”. A posição inicial é o índice menor que marca o começo da substring e o final, o maior que marca o fim dela. Exemplo:

string.substring (início, final);

Existem algumas exceções interessantes que são tratadas pelo método. Um exemplo é o caso das pessoas especificarem um índice inicial maior que o índice final, como “substring (4,1)”. Nesse caso, a função troca os números e compreende que a pessoa deseja uma substring que começa no 1 e vai até o 4. 

Outra exceção é o caso de números negativos. Para esses cenários, o método considera automaticamente o número negativo como um 0, a origem da string original. Em uma situação em que fosse escrito “substring (-3,8)”, a string retornada seria algo que está entre o 0 e o índice 8. 

Quando o índice final não é informado, considera-se automaticamente que a substring vai até o final da string original. Já se o índice final for maior que o tamanho da string original, o método entende que é preciso também seguir até o final da string original. 

No exemplo a seguir, o resultado é a substring a partir da posição 2, ou seja, do primeiro “l” de “hello”:

var string = "Hello world!";
var ex = str.substring(2);

Além disso, se tivermos um índice inicial igual ao índice final, a string retornada é vazia, seguindo a lógica de que a seleção não extraiu nenhuma substring. 

Exemplo de uso do método com o Length:

 var string = 'exemplo'
 let string2 = string.substring(string.length - 4)
 console.log (string2) 

Quais os 5 principais exemplos de uso do método Substring ()?

Veremos alguns exemplos práticos de como lidar com strings em JavaScript. São aplicações bem comuns em diferentes níveis de complexidade.

Procurar uma substring

Um dos usos é justamente para procurar uma substring dentro de uma string maior. Pode-se usar um índice que a pessoa programadora já sabe ou algum dos métodos mencionados anteriormente. Por exemplo, em uma sequência “essa é uma frase”, é possível procurar o termo “frase” em uma substring localizada a partir do índice 5 até o final da string original.

Outro exemplo:

 var str = "hello"
 var str2 = str.substring (3)
 if (str2.includes ("llo") == true){
 console.log("string encontrada")
 } 

Substituir uma substring por outra

Outro uso é para substituir uma substring de uma frase por outra. Em um exemplo “essa é uma substring”, é possível trocar o termo “substring” por “frase”. É apenas necessário saber qual o índice em que aparece o termo “substring”, removê-la e concatenar o resto com o termo frase. 

Eis um código para essa função:

 function replaceString(velhaString, novaString, principal) {
  for (let i = 0; i < principal.length; ++i) {
   if (principal.substring(i, i + velhaString.length) == velhaString) {
    principal = principal.substring(0, i) + novaString + principal.substring(i + velhaString.length, principal.length)
   }
  }
  return principal
 }
 replaceString('World', 'Web', 'Brave New World') 

Corrigir a capitalização

Em outros casos, pode ser necessário corrigir a capitalização de uma sequência de caracteres dentro de uma string maior. Nesse caso, pode-se usar o método de “lowercase” ou “uppercase”, que também podem ser chamados da mesma forma que o Substring, só que sem a necessidade de parâmetros. 

 var string = "exemplo"
 var subS = string.substring (0,2).toUpperCase () 

Processar formulários

No caso da web, uma aplicação muito comum é no tratamento de informações passadas pela pessoa utilizando o site, como em um formulário. Esses dados podem vir juntos, em uma única string. Dessa forma, a pessoa programadora precisa realizar a separação desses dados como diferentes substrings.

Assim, é viável tratar cada pedaço de informação de maneira isolada e usar cada um para alguma lógica específica. Essa abordagem pode facilitar para quem usa o sistema na digitação dessas informações, o que otimiza a experiência. 

Processar linguagem natural

Outro uso, ainda mais robusto do que as opções já citadas, é no processamento de linguagem natural. Essa é uma área da inteligência artificial que busca fazer com que computadores entendam a intenção dos textos humanos, bem como consigam extrair os sentimentos associados com a escrita. Ou seja, envolve manipulação de strings o tempo todo, incluindo a ideia de selecionar substrings.

O processamento pode ser usado na web para análise de buscas por sistemas buscadores. Nessas análises, é possível, inclusive, digitar várias palavras aleatórias e encontrar resultados para cada uma delas.

Ou seja, se escrevemos “frase string javascript”, conseguimos verificar resultados com esses três termos, bem como alguns específicos que só contêm “frase” e outros que só contêm “string”.

Como esses dados são digitados de uma vez, o sistema claramente usa uma lógica de divisão das strings. Esse método pode ser combinado com o uso de expressões regulares – para entender o conceito, confira este artigo.

Em outros casos, é possível construir chatbots em JavaScript, o que também utiliza essas lógicas que mencionamos. Um chatbot é como um sistema assistente que conversa com as pessoas e entende o que elas escrevem, de modo a atender a suas solicitações. 

Filtros de spam também são usos comuns de processamento de linguagem natural e que envolvem manipulação de strings.

Como é a compatibilidade com navegadores?

O método Substring é extremamente versátil, pois apresenta compatibilidade com praticamente todos os principais navegadores. Existe suporte no Google Chrome, no Mozilla Firefox, no Internet Explorer, no Opera e no Safari. Da mesma forma, as versões mobile desses sistemas também suportam o método. 

Desse modo, ele pode ser usado sem problemas e preocupações por quem precisa manipular strings na web.

O JavaScript Substring é um método extremamente importante para lidar com sequências de caracteres na linguagem de programação web. Contudo, como o JavaScript é uma linguagem multifuncional e apresenta diversas aplicações fora da internet, é uma função que ajuda também em diversos outros casos, como em programas de inteligência artificial. Como vimos, é um método bem simples e que ajuda bastante quem programa.