O Dart fornece um método chamado replaceAllMapped para substituir facilmente qualquer parte de uma substring em uma String usando expressões regulares que oferece mais opções que o método replaceAll.

O replaceAll() ajuda a substituir strings simples

No Dart, temos um método chamado replaceAll() que permite substituir uma sequência simples de texto. Veja a definição:

String replaceAll(Pattern from, String replace);

Esse método suporta dois parâmetros; o from deve ser uma sequência com a seção de texto dentro da sequência de texto que você deseja substituir e o segundo parâmetro replace é o texto que você deseja substituir, veja um exemplo:

newString = 'O que é?';
newString.replaceAll('?', '*');
// it returns the string 'o que é*'

Este método auxilia grande parte das substituições, porém ele troca apenas o trecho fixo from pelo replace.

Caso você queira mais opções de substituição – como expressões regulares por exemplo – existe o método replaceAllMapped que é muito mais poderoso.

Entendendo o replaceAllMapped()

A definição do método replaceAllMapped é:

Basicamente o replaceAllMapped substitui todas as substrings que correspondem ao parâmetro from por uma nova String a partir da correspondência match.

String replaceAllMapped(Pattern from, String replace(Match match));

Isso pode ser usado para substituir Strings por novo conteúdo que depende da match, ao contrário de replaceAll, onde a sequência de substituição é sempre a mesma.

Esse método pode ser usado para descobrir tipos complexos e diferentes de substrings usando uma regex. Isso é melhor que o método replaceAll, no qual apenas uma substring específica pode ser transmitida.

Exemplo de uso do método replaceAllMapped

No exemplo abaixo, estamos substituindo todas as vogais minúsculas em uma sequência por *.

import "dart:core";

void main() {
  final original = "abcdefghijklmnopqrstuvwxyz";
  final resultado =
      givenString.replaceAllMapped(new RegExp(r'[aeiou]'), (match) {
    return '*';
  });
  print(resultado);
}

Ele imprimirá a saída abaixo:

*bcd*fgh*jklmn*pqrst*vwxyz

Desse modo fica fácil criar padrões de substituição de Strings no Dart usando um simples regex.

Deixe uma resposta

Fechar Menu