# Processando strings

Strings são semelhantes a `arrays` em muitos aspectos: em certo sentido, uma `string` se parece com um `array` de caracteres. Além disso, você pode iterar tanto em strings quanto em `arrays`. Às vezes, pode ser necessário processar uma `string` e convertê-la em um `array`.

## Strings e arrays

É possível converter entre strings e matrizes de caracteres usando métodos especiais como valueOf()e toCharArray().

```java
char[] chars = { 'A', 'B', 'C', 'D', 'E', 'F' };

String stringFromChars = String.valueOf(chars); // "ABCDEF"

char[] charsFromString = stringFromChars.toCharArray(); 
// { 'A', 'B', 'C', 'D', 'E', 'F' }

String theSameString = new String(charsFromString); // "ABCDEF"
```

Explicar código
Existe outra maneira de transformar uma string em um array. Veja:

```java
String text = "Hello";
String[] parts = text.split(""); // {"H", "e", "l", "l", "o"}
```

Aqui, usamos um método muito mais conciso que divide uma string em partes. Vamos explorá-lo com mais detalhes!

## Dividindo a string

Uma `string` pode ser dividida em um `array` de strings com base em um delimitador. Para isso, chamamos o método `split`, que divide a string em sub strings delimitadas por um separador. No exemplo anterior, usamos o delimitador "", que divide automaticamente uma string em elementos menores (sub strings) que consistem em um caractere.

Se o delimitador for especificado, o método retornará um `array` de todas as sub strings. Observe que o delimitador em si não está incluído em nenhuma das sub strings:

```java
String sentence = "a long text";
String[] words = sentence.split(" "); // {"a", "long", "text"}
```
Vamos tentar dividir um número de telefone americano em código do país, código de área, código da central telefônica e outros dígitos restantes:

```java
String number = "+1-213-345-6789";
String[] parts = number.split("-"); // {"+1", "213", "345", "6789"}
```

Tenha em mente que todas essas partes ainda são strings, não importa sua aparência.

Escolha seu delimitador com sabedoria, caso contrário, você poderá obter algumas frases que começam com um espaço:

```java
String text = "That's one small step for a man, one giant leap for mankind.";
String[] parts = text.split(","); 
// {"That's one small step for a man", " one giant leap for mankind."}
```

Você pode escolher qualquer delimitador que preferir, incluindo uma combinação de espaços e palavras:

```java
String text = "I'm gonna be a programmer";
String[] parts = text.split(" gonna be "); // {"I'm", "a programmer"}
```

Como você pode ver aqui, o método split também é uma boa ferramenta para se livrar de algo que você não precisa ou não quer usar.

## Iterando sobre uma string

É possível iterar sobre os caracteres de uma string usando um loop (while , do-while , for-loop).

Veja o exemplo a seguir:

```java
String scientistName = "Isaac Newton";

for (int i = 0; i < scientistName.length(); i++) {
    System.out.print(scientistName.charAt(i) + " ");
}
```

Em strings, assim como em arrays, a indexação começa em 0. No nosso exemplo, o laço for itera sobre a string "Isaac Newton". A cada iteração, o charAtmétodo retorna o caractere atual no iíndice, e esse caractere é então impresso no console, seguido por um espaço em branco.

## Resumo

Você pode converter entre uma `string` e um `array` usando os métodos `valueOf()` e `toCharArray()` ou dividir uma string em sub strings com a ajuda do método `split()`. Você também pode iterar sobre os caracteres de uma `string` usando um loop. Todos esses métodos ajudarão você a resolver diferentes tarefas e aprimorar sua experiência em programação.
