---
name: contiene-testuale
description: Usare quando l'utente deve verificare se una stringa contiene un sottotesto specifico.
---

# Contiene Testuale

Questa skill verifica se una stringa contiene un sottotesto specifico. Utile per ricerche in stringhe, filtri di testo, validazione di contenuti, analisi di dati testuali.

## Procedura

1. **Verificare se contiene**: Usare `contieneTestuale(testo, sottotesto)`
2. **Passare i parametri**: testo (stringa principale) e sottotesto (stringa da cercare)
3. **Gestire il risultato**: Restituisce true o false

## Regole

- `testo` deve essere una stringa
- `sottotesto` deve essere una stringa
- Restituisce false se uno dei parametri non è una stringa
- **Case-sensitive**: Distingue tra maiuscole e minuscole
- Restituisce true se sottotesto è stringa vuota (comportamento di includes())
- Restituisce true se testo === sottotesto

## Esempi

### Esempio 1: Verificare contenuto semplice

```javascript
const contiene = contieneTestuale('Ciao Mondo', 'Ciao');
console.log(contiene); // true
```

### Esempio 2: Ricerca case-sensitive

```javascript
console.log(contieneTestuale('Ciao Mondo', 'ciao')); // false (case-sensitive)
console.log(contieneTestuale('Ciao Mondo', 'Mondo')); // true
```

### Esempio 3: Filtrare array di stringhe

```javascript
const frasi = ['Ciao Gino', 'JavaScript è potentissimo', 'Funzione utilissima'];
const conJs = frasi.filter(f => contieneTestuale(f, 'JavaScript'));
console.log(conJs); // ['JavaScript è potentissimo']
```

### Esempio 4: Validazione email

```javascript
const email = 'user@example.com';
const valida = contieneTestuale(email, '@');
console.log(valida); // true
```

### Esempio 5: Ricerca sottostringa vuota

```javascript
const contiene = contieneTestuale('qualunque testo', '');
console.log(contiene); // true (comportamento di includes())
```

## Dettagli Aggiuntivi

- **Implementazione**: Usa `String.includes()`
- **String.includes()**: Metodo nativo per verificare se una stringa contiene un sottotesto
- **Case-sensitivity**: includes() è case-sensitive
- **Efficienza**: O(n) - tempo lineare rispetto alla lunghezza delle stringhe
- **Esempi**:
  - contieneTestuale('Ciao mondo', 'Ciao') → true
  - contieneTestuale('Ciao mondo', 'Mondo') → false (case-sensitive)
  - contieneTestuale('Ciao mondo', '') → true
- **Alternative**: Per ricerche case-insensitive, convertire entrambe in minuscolo prima
  ```javascript
  function contieneTestualeInsensitive(testo, sottotesto) {
      return contieneTestuale(testo.toLowerCase(), sottotesto.toLowerCase());
  }
  ```
