Como comparar um char com quebra de linha

Expressões Regulares são usadas com os metodos  test e exec do objeto RegExp e com os metodos match, replace, search, e split do objeto String. Estes metodos são explicados em detalhe em JavaScript Reference.

Quando você quer saber se um padrão é encontrado em uma string, use o método test ou search; para mais informações (mas execução mais lenta) use o método exec ou match. Se você usar exec ou match e se houver correspondência, estes métodos retornam um array e atualizam as propriedades do objeto da expressão regular associada  e também do objeto da expressão regular predfinada RegExp. Se não houver corespondência, o método exec retorna null (convertido para false).

No seguinte exemplo, o script usa o método exec para encontrar uma correspondência em uma string.

var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz");

Se você não precisa acessar as propriedades da expressão regular, uma alternativa de criar myArray é com esse script:

var myArray = /d(b+)d/g.exec("cdbbdbsbz");

Se você quiser construir a expressão regular a partir de uma string, outra alternativa é esse script:

var myRe = new RegExp("d(b+)d", "g"); var myArray = myRe.exec("cdbbdbsbz");

Com esses scripts, a correspondência é encontrada o array é retornado e são atualizadas as propriedades mostradas na tabela a seguir.

Como mostrado na segunda forma deste exemplo, você pode usar uma expressão regular criada com um inicializador de objeto sem atribuí-la à uma variável. Contudo, se você o fizer, toda ocorrência é uma nova expressão regular. Assim sendo, se você usar esta forma sem atribuí-la à uma variável, você não pode subsequentemente acessar as propriedades da expressão regular. Assumamos que tenha este script, por exemplo:

var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz"); console.log("O útltimo índice é " + myRe.lastIndex);

Este script mostra:

O último índice é 5

Contudo, se tem este script:

var myArray = /d(b+)d/g.exec("cdbbdbsbz"); console.log("O último índice é " + /d(b+)d/g.lastIndex);

Ele mostra:

O último índice é 0

As ocorrências de /d(b+)d/g nas duas declarações são objetos expressões regulares diferentes e consequentemente têm diferentes valores para suas propriedades lastIndex. Se precisa acessar as propriedades de uma expressão regular criada com um inicializaor de objeto, você deve primeiro atribuí-la à uma variável.

As strings de texto podem ser representadas de duas maneiras. Você pode usar o tipo de dado String, que é parte do core desde a versão 0019, ou você pode fazer uma string com um vetor do tipo char e terminá-lo em null. Essa página descreve o segundo método. Para mais detalhes sobre o objeto String, que possui mais funcionalidades ao custo de mais memória ocupada, veja a página sobre os objetos String.

Todos as declarações seguintes são válidas para strings.

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

Possibilidades para declarar strings

  • Declarar um vetor de chars sem inicializá-lo, como em Str1

  • Declarar um vetor de chars (com um char extra) e o compilador irá adicionar o caractere null requerido, como em Str2

  • Adicionar o caractere null explicitamente, Str3

  • Inicializar uma string constante em aspas; o compilador irá ajustar o tamanho do vetor para a string mais o caractere null terminador, como em Str4

  • Inicializar o vetor com o tamanho explícito e a string constante, Str5

  • Inicializar o vetor, deixando espaço extra para uma string maior, Str6

Geralmente, strings são terminadas com um caractere null (código ASCII 0). Isso permite que funções (como Serial.print()) saibam onde está o final de uma string. Do contrário, essas funções continuariam lendo bytes consequentes da memória que não fazem parte da string.

Isso significa que sua string precisa ter espaço para mais um caractere além do texto que você quer que ela contenha. Por isso que Str2 e Str5 precisam ter oito carcteres, mesmo que "arduino" seja apenas sete - a última posição é automaticamente preenchida com um caractere null. Str4 é automaticamente ajustada para oito caracteres, sendo um para o null extra. Em Str3, o caractere null foi explicitamente incluído, adicionando-se '\0'.

Note que é possível criar uma string sem uma caractere null no final (ex. se se você tivesse especificado o tamanho de Str2 como sete em vez de oito). Porém isso irá quebrar a maioria das funções que usam strings, então você não deve fazê-lo intencionalmente. Se você notar algo se comportando estranhamente no seu programa (operando em caracteres fora da string), isso pode ser o problema.

Aspas simples ou aspas duplas?

As strings são sempre definidas envoltas em aspas duplas ("Abc") e caracteres são sempre definidos envoltos em aspas simples('A').

Escrevendo strings muito longas

Você pode escrever uma string muito longa em várias linhas, da seguinte forma:

char myString[] = "Essa é a primeira linha" " Essa é a segunda linha" " etcetera";

Frequentemente é conveniente, quando lidando-se com grandes quantidades de texto, como um projeto com um display LCD, configurar um vetor de strings. Como strings por sí próprias já são vetores, isso é na verdade um exemplo de um vetor bidimensional.

No código abaixo, o asterisco depois do tipo de dado char “char*” indica que esse é um vetor de "ponteiros". Todos os nomes de vetores são na verdade ponteiros, então isso é necessário para criar um vetor de vetores. Ponteiros são uma partes mais esotéricas da linguagem C++ para inicinates entenderem, mas não é necessário entender ponteiros profundamente para usá-los efetivamente aqui.