Pular para o conteúdo

Comprimento e Iteração de Caracteres

Nesta página

.len() retorna o número de bytes da string, não o número de caracteres Unicode. Para texto ASCII puro os valores coincidem; caracteres acentuados ou emoji podem ocupar mais de um byte.

.chars() devolve um array de strings — cada elemento é um caractere (uma string de comprimento 1). Itere com for para processar letra a letra:

.len() para medir; .chars() para iterar e contar ocorrências.

08-len-and-chars.zolo
Playground
// Feature: Length and iteration over characters

// Syntax: `s.len()` -> int, `s.chars()` -> [str]

// When to use: measure length, iterate character by character.


// -- len: byte length ------------------------------------------

print("zolo".len())  // 4

print("".len())  // 0

print("hello world".len())  // 11


// Note: `.len()` returns the length in BYTES, not Unicode code

// points. Accented characters / emoji may take more than one byte.

print("cafe".len())  // 4 (plain ASCII)

print("a".len())  // 1


// -- chars: array of characters (1 string per element) --------

let cs = "abc".chars()
print(cs.len())  // 3

print(cs[0])  // a

print(cs[1])  // b

print(cs[2])  // c


// Iterate character by character.

for c in "zolo".chars() {
  print(c)
}

// expected:

// z

// o

// l

// o


// Count occurrences of a character.

fn count_char(s: str, target: str) -> int {
  var total = 0
  for c in s.chars() {
    if c == target {
      total = total + 1
    }
  }
  return total
}

print(count_char("mississippi", "s"))  // 4

print(count_char("zolo lang", "o"))  // 2


// Check whether a string is "empty".

fn is_empty(s: str) -> bool {
  return s.len() == 0
}

print(is_empty(""))  // true

print(is_empty("x"))  // false

Desafio

Escreva uma função inverter(s: str) -> str que percorre .chars() de trás para frente (use um índice decrescente) e acumula os caracteres com +. Teste com "zolo" — o resultado deve ser "oloz".

Buscar no Zolo

9 resultados

enespt-br