Verifichi se un testo contiene una sottostringa
Questo strumento risponde direttamente a una domanda di convalida comune: il testo include la sottostringa prevista?
Esegui gratis nel browser
Restituisce un valore booleano e la posizione, calcolata a partire da zero, della prima corrispondenza, oppure -1 se non ve ne sono. Lei può mantenere la distinzione esatta tra maiuscole e minuscole oppure ignorarla. Il risultato è deterministico, facile da verificare e utile quando un flusso richiede una condizione di ricerca rapida senza espressioni regolari o corrispondenze approssimative.
Controlli una sottostringa con un risultato inequivocabile
Inserisca il valore completo in text e la sequenza da individuare in substring. La risposta comprende contains, che vale true quando esiste una corrispondenza, e position, che indica dove comincia la prima occorrenza. Le posizioni partono da zero: una sottostringa all’inizio restituisce quindi la posizione 0. Se non viene trovata, il risultato è false e la posizione è -1, così l’assenza resta distinta da una corrispondenza iniziale. Questa coppia è comoda sia per chi legge sia per il software che applica una condizione. L’operazione cerca una sottostringa letterale e contigua. Spazi, punteggiatura e caratteri ripetuti sono trattati come testo normale, non come schemi, quindi non occorre eseguire l’escape dei simboli delle espressioni regolari. Se la stessa sottostringa compare più volte, viene indicata soltanto la prima posizione. Il comportamento è particolarmente utile nelle convalide in cui conta sapere se compare un marcatore previsto e dove potrebbe iniziare un’analisi successiva. Una sottostringa vuota viene rifiutata perché ogni stringa tecnicamente la contiene e il risultato sarebbe sorprendente e poco utile.
Scelga se distinguere maiuscole e minuscole
L’opzione case_sensitive è true per impostazione predefinita. In questa modalità, maiuscole e minuscole devono coincidere esattamente: cercare “Ready” non trova “ready”. La corrispondenza esatta è adatta a identificatori, marcatori di protocollo, codici prodotto e contenuti in cui l’uso delle maiuscole ha significato. Imposti false quando desidera un controllo testuale pratico che consideri equivalenti tali varianti, ad esempio per trovare una parola di stato nelle note inserite dagli utenti o verificare che un titolo contenga una frase. La modalità senza distinzione normalizza coerentemente il testo sorgente e la sottostringa prima di localizzare la prima occorrenza, mentre la posizione restituita continua a riferirsi al testo originale. La capacità non elimina gli spazi alle estremità e non modifica la punteggiatura, che rimangono quindi significativi. Non esegue neppure equivalenza degli accenti, stemming, traslitterazione, confronto approssimativo o rilevamento di parole intere. Per esempio, “cat” può corrispondere alle prime tre lettere di “catalog”. Regole così circoscritte rendono ogni risultato ripetibile ed evitano assunzioni linguistiche silenziose.
Usi la posizione in sicurezza nei flussi di convalida
Un flusso tipico invia un valore candidato, controlla contains e sceglie un ramo senza dover interpretare il campo numerico. Quando esiste una corrispondenza, position può supportare diagnosi, anteprime o una fase di analisi successiva. Un controllo d’importazione, per esempio, può confermare che un’intestazione include un token obbligatorio e registrare dove inizia; un test può verificare che un testo generato contenga una frase approvata; uno strumento di assistenza può rilevare un marcatore noto in una riga di log incollata. Consideri sempre la posizione restituita come un indice di stringa JavaScript, misurato in unità di codice UTF-16. Nel normale testo latino coincide con il conteggio consueto dei caratteri, ma alcune emoji e simboli Unicode meno comuni occupano due unità. L’indice nativo della piattaforma viene restituito deliberatamente affinché browser e API producano lo stesso risultato e Lei possa usarlo direttamente con i metodi di suddivisione JavaScript. Questa è una ricerca letterale, non un sistema di sanitizzazione o classificazione. Convalidi separatamente la struttura dei formati sensibili e utilizzi un parser dedicato quando contano limiti, escape o corrispondenze multiple.
Casi d'uso
Convalidare un testo generato
Confermi che un messaggio generato includa un’avvertenza obbligatoria o una frase approvata prima della pubblicazione.
Controllare marcatori d’importazione
Verifichi che un’intestazione o un record incollato contenga il token atteso e indichi dove può iniziare l’analisi.
Provare etichette e messaggi di stato
Accerti che l’output dell’applicazione contenga un’etichetta nota, distinguendo o meno maiuscole e minuscole.
Domande frequenti
Che cosa contiene il risultato?
Indica se esiste una corrispondenza, la posizione da zero della prima occorrenza e l’impostazione usata per le maiuscole.
Quale posizione viene restituita se non vi sono corrispondenze?
La posizione è -1 e contains vale false. Una corrispondenza all’inizio restituisce invece la posizione 0.
La ricerca distingue le maiuscole per impostazione predefinita?
Sì. Imposti case_sensitive su false quando le varianti maiuscole e minuscole devono essere equivalenti.
La sottostringa supporta le espressioni regolari?
No. Viene trattata come testo letterale, quindi punteggiatura e simboli non hanno una sintassi speciale.
Posso cercare una sottostringa vuota?
No. Le sottostringhe vuote vengono rifiutate perché la loro corrispondenza universale serve raramente a convalidare.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La stessa logica deterministica può essere eseguita anche nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/str/contains \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Release candidate passed validation.","substring":"passed"}'const res = await fetch("https://api.kit.forhosting.com/str/contains", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Release candidate passed validation.",
"substring": "passed"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/contains",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Release candidate passed validation.",
"substring": "passed"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/contains", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Release candidate passed validation.","substring":"passed"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Release candidate passed validation.","substring":"passed"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/contains", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "Release candidate passed validation.",
"substring": "passed"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.contains",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |