Posizione sottostringa
In «The kit parses logs: ERROR at line 12, then INFO, then ERROR again.» il primo ERROR si trova all'indice 21, riga 1, colonna 22, e termina prima del 26. Punti e parentesi quadre si cercano come testo normale. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Calcola
- ERROR
- Indice
- 21
- Inizio
- 0
- Lunghezza
- 67
- Lunghezza della ricerca
- 5
Individuare la prima occorrenza di una frase è il primo passo di quasi ogni pipeline di testo: Lei situa un marcatore e poi ritaglia, analizza o evidenzia da quell’indice di caratteri. Questo strumento di posizione della sottostringa prende il testo di origine e un termine di ricerca non vuoto e restituisce l’indice di caratteri a base zero della prima corrispondenza letterale, più se è stata trovata, lo scostamento finale esclusivo e la riga e la colonna a base uno per saltare al risultato in un editor. Lo start opzionale consente di riprendere dopo una corrispondenza precedente. La corrispondenza opzionale senza distinzione di maiuscole copre le bozze miste. I termini di ricerca vuoti falliscono con input non valido così i job di massa non trattano mai la stringa vuota come corrispondenza a ogni scostamento.
Che significa trovare la posizione di una sottostringa e quando usarla
Trovare la posizione di una sottostringa significa scorrere la stringa di origine da sinistra a destra — o da uno scostamento start opzionale —, fermarsi alla prima corrispondenza letterale non sovrapposta di un termine di ricerca e riferire l’indice di caratteri di quel risultato così un passo successivo può ritagliare, analizzare o evidenziare da lì.
La corrispondenza è letterale: se cerca un punto, una parentesi o una parentesi quadra, quei caratteri sono testo semplice, non sintassi di espressione regolare, così lo strumento resta prevedibile per i non sviluppatori e per le pipeline che non devono mai sorprendersi con caratteri speciali. Preferisca questo calcolatore quando l’intento di ricerca è trovare la posizione di una sottostringa, l’indice di una stringa, individuare la prima occorrenza o ottenere lo scostamento di un token.
Le fonti tipiche includono righe di registro in cui serve il primo marcatore ERROR, frammenti di configurazione in cui una chiave va trovata prima di tagliare un valore, HTML o markdown in cui un delimitatore di intestazione avvia una sezione, e celle CSV o TSV in cui inizia un delimitatore o un campo tra virgolette. La corrispondenza opzionale senza distinzione di maiuscole piega il caso delle lettere così il primo Hello, HELLO o hello viene catturato senza elencare varianti.
Non usi questo prodotto quando deve riscrivere la corrispondenza — è un intento SEO distinto servito dagli strumenti di sostituire la prima e di trova e sostituisci — né quando deve elencare ogni occorrenza, gruppi di cattura, lookaround o un motore regex multilinea.
Casi d'uso
Individuare il primo marcatore di registro o errore
Analizzatori e strumenti di supporto trovano il primo ERROR, TODO o delimitatore, poi ritagliano o evidenziano da quell’indice di caratteri senza riscrivere il file.
Riprendere uno scorrimento dopo un risultato precedente
Invii l’end esclusivo precedente come start per percorrere la seconda occorrenza e le successive una a una in modelli, registri e file di configurazione.
Domande frequenti
Come trovo la posizione di una sottostringa?
L’index della risposta è lo scostamento di caratteri a base zero della prima corrispondenza, o -1 se non ve n’è.
L’indice è a base zero o a base uno?
index è a base zero, lo stesso contratto di String indexOf di JavaScript, così può passarlo a slice. Quando una corrispondenza è trovata, position è il numero di carattere a base uno che si attende in un editor, e line e column sono a base uno anch’essi.
Che succede se il termine di ricerca è vuoto?
Una stringa find vuota viene rifiutata così le pipeline non trattano mai la stringa vuota come corrispondenza a ogni scostamento; quei fallimenti non vengono addebitati.
Lo strumento di posizione di una sottostringa è gratuito?
Lo strumento del browser viene eseguito gratis sul Suo dispositivo.
Find supporta le espressioni regolari?
No. Il termine di ricerca è sempre trattato come stringa letterale. Punti, parentesi quadre e altri metacaratteri di regex corrispondono a se stessi così il comportamento resta prevedibile per redattori e job di massa.
Strumenti correlati
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/index-of \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}'const res = await fetch("https://api.kit.forhosting.com/str/index-of", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/index-of",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/index-of", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/index-of", 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": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.index_of",
"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.
Limiti
max_chars | 100000 |
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. |
Note tecniche
Che significa trovare la posizione di una sottostringa e quando usarla
Un termine di ricerca vuoto solleva invalid_input, il che protegge i job di massa dal classico errore di trattare la stringa vuota come corrispondenza tra ogni carattere.
Contratto di ingresso, rifiuto della ricerca vuota e lettura della risposta
Quando una corrispondenza è trovata la risposta include anche position come l’indice umano a base uno, end come lo scostamento finale esclusivo, line e column come coordinate di editor a base uno, e matched come il ritaglio esatto sul risultato così una ricerca senza maiuscole mostra ancora la capitalizzazione originale. Una corrispondenza assente è un successo valido: found è false e index è meno uno, il risultato onesto per un haystack che non contiene l’ago. Usi index con slice quando uno script taglierà il resto; usi line e column quando un’interfaccia deve scorrere fino al risultato; usi found da solo quando un varco deve solo sapere se il marcatore esiste. Invii un corpo JSON con il campo stringa obbligatorio text impostato sulla fonte che desidera esaminare e il campo stringa obbligatorio find impostato su un termine di ricerca non vuoto. Lo start opzionale vale zero per impostazione predefinita ed è l’indice UTF-16 a base zero da cui inizia lo scorrimento, così può riprendere dopo un risultato precedente senza riesaminare il prefisso. case_insensitive opzionale vale false per impostazione predefinita per il caso esatto; lo imposti a true quando la prima bozza a maiuscole miste deve comunque corrispondere. Si accettano alias per client più vecchi: text anche come input, value, s, content, source o haystack; find come search, needle, substring, query o pattern; start come from, from_index o offset; case_insensitive come ignore_case, ci o insensitive. Text assente, find assente, un valore non stringa, uno start negativo o non intero, o una stringa find vuota sollevano invalid_input con un messaggio che nomina il problema, e quei fallimenti non vengono addebitati sull’API prepagata. La lunghezza è limitata a centomila caratteri così gli scorrimenti del browser e del Worker restano delimitati. In caso di successo la risposta include sempre index come lo scostamento di caratteri a base zero o meno uno se non ve n’è, found come booleano, text e find come applicati, start e case_insensitive come usati, length e find_length come lunghezze in caratteri, e method sempre uguale a index_of.
Uso dell’API, prezzi, flussi di lavoro e limiti pratici
Chiami lo strumento gratuito nel browser di posizione della sottostringa per controlli di incolla, dimostrazioni in aula, QA dei contenuti e localizzazione rapida senza installare un’utilità desktop né scrivere frammenti indexOf in ogni linguaggio. Un flusso tipico trova il primo marcatore di sezione, legge index e end, poi ritaglia l’intestazione che segue. Un altro flusso percorre risultati successivi inviando l’end precedente come start successivo, il che individua la seconda occorrenza e le successive senza uno strumento di sostituzione globale. Non si aspetti un salto consapevole dei tag HTML, campi di unione di documenti strutturati, indici di cluster di grafemi o collazione specifica del locale oltre la corrispondenza standard senza maiuscole — sono problemi distinti. Usi l’API prepagata del KIT quando un CMS, un job ETL, un backend di moduli, un desk di supporto, un analizzatore o un client mobile necessitano dello stesso localizzatore a saldo a $0.002 per elemento riuscito; i fallimenti di validazione non consumano mai saldo dopo il rifiuto del motore. Abbini questo endpoint a sostituire la prima quando un passo successivo deve riscrivere solo quel risultato, o a trova e sostituisci quando ogni corrispondenza deve cambiare, ma tenga la posizione della sottostringa come landing propria così l’intento SEO non si mescola con editor che mutano il testo. Gli autori che spediscono SDK possono documentare text e find come campi obbligatori e mostrare una fonte a più corrispondenze in cui viene restituito solo il primo indice più un esempio di errore di find vuoto così gli integrator vedono entrambi i lati del contratto.
Casi di integrazione
QA e fixture deterministiche
I banchi di prova fissano index, found, line e column così un refactor che passa a sostituzione, regex o corrispondenza di find vuoto fa fallire subito l’integrazione continua.