Recherche du plus long suffixe commun entre des lignes
report-final.csv, backup-final.csv et export-final.csv partagent la fin -final.csv, longue de 10 caractères, et pas seulement l'extension .csv. Collez une valeur par ligne pour vérifier que noms de fichiers, chemins ou codes suivent la même règle. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- report-final.csv backup-final.csv export-final.csv
- Suffixe
- -final.csv
- Longueur
- 10
- Nombre de lignes
- 3
L’outil de recherche du plus long suffixe commun compare chaque ligne que vous fournissez et renvoie la séquence exacte de caractères qu’elles partagent toutes à la fin. Il est utile lorsque des noms de fichiers, chemins, codes produit, libellés générés ou autres chaînes semblent suivre la même convention. Collez les lignes en texte brut pour obtenir un résultat déterministe comprenant le suffixe, sa longueur en caractères et le nombre de lignes examinées. Aucun élément n’est deviné, réordonné ou rapproché de façon approximative.
Repérez la terminaison commune d’une liste
Placez une valeur sur chaque ligne, puis lancez la recherche. L’outil part du dernier caractère de toutes les lignes et remonte tant que chaque caractère reste identique. Le résultat est donc le plus long suffixe exact, et non une simple extension ou le dernier mot.
Par exemple, des lignes terminées par <code>-final.csv</code> partagent toute cette séquence même si leurs préfixes diffèrent. Si l’une finit par <code>.csv</code> et l’autre par <code>. CSV</code>, la casse ne correspond pas et cette extension n’est pas déclarée commune.
Cette rigueur aide à contrôler les règles de nommage sans masquer les écarts. Vos automatisations peuvent ainsi distinguer une vraie correspondance d’un suffixe vide et consigner le nombre de valeurs comparées. Si vous fournissez une seule ligne, cette ligne entière constitue son suffixe commun.
Comprenez les fins de ligne et la comparaison
Les séparateurs Windows, Unix et les anciens retours chariot sont normalisés avant la comparaison afin que des textes issus de différents systèmes se comportent de manière cohérente. Un unique saut final est considéré comme la terminaison du fichier, et non comme un enregistrement vide supplémentaire. Les lignes vides placées ailleurs sont conservées et participent au calcul ; puisqu’elles ne contiennent aucun caractère, elles rendent le suffixe commun vide.
La correspondance utilise les points de code Unicode plutôt que les unités UTF-16 brutes. De nombreux emoji comptent donc pour un seul caractère dans la longueur renvoyée. La comparaison reste littérale : accents, formes de normalisation, espaces, ponctuation et casse ne changent pas.
Les espaces finaux sont de vrais caractères et influencent la réponse. Si vous souhaitez comparer le sens des libellés plutôt que leur représentation exacte, nettoyez ou normalisez d’abord la source.
Exploitez le résultat pour valider et automatiser
Un suffixe commun constitue un indicateur compact de cohérence des noms. Dans une chaîne de publication, comparez les artefacts et exigez une extension précise avant leur envoi. Lors d’une migration, examinez les chemins exportés pour vérifier que chaque élément partage le même répertoire final ou marqueur de format.
Pendant la préparation des données, isolez une marque de contrôle ou un code fournisseur situé après un préfixe variable. Cette capacité ne déduit pas les extensions, ne supprime pas les espaces, ne modifie pas la casse et ne découpe pas la ponctuation. Ces choix altéreraient la source.
Elle fournit plutôt une primitive déterministe, combinable avec des étapes distinctes de nettoyage.
Cas d’usage
Contrôler les extensions de fichiers
Vérifiez qu’un lot de noms partage la même extension littérale ou un suffixe de version plus long avant traitement.
Examiner les conventions d’identifiants
Révélez une marque finale fixe commune aux codes produit, libellés de tickets ou identifiants générés à l’extérieur.
Comparer des chemins exportés
Détectez un répertoire final, un nom de fichier ou un marqueur de format commun dans les chemins d’une migration.
Questions fréquentes
Que se passe-t-il si aucune fin n’est commune ?
Le suffixe est une chaîne vide et la longueur renvoyée vaut zéro.
La comparaison respecte-t-elle la casse ?
Oui. Majuscules et minuscules diffèrent, et l’entrée est comparée exactement comme vous la fournissez.
Un saut final ajoute-t-il une ligne vide ?
Non. Un seul saut final termine le fichier ; les lignes vides situées ailleurs restent dans la comparaison.
Comment les emoji sont-ils comptés ?
La longueur utilise les points de code Unicode ; de nombreux emoji comptent donc pour un caractère même si JavaScript les stocke dans deux unités UTF-16.
Qu'obtient-on avec une seule ligne ?
La ligne entière, puisqu'aucune autre ligne ne la contredit. Dès que vous ajoutez une deuxième valeur, le résultat se réduit aux caractères que les deux lignes partagent à la fin.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/str/common-suffix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"report-final.csv\nbackup-final.csv\nexport-final.csv"}'const res = await fetch("https://api.kit.forhosting.com/str/common-suffix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/common-suffix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/common-suffix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"report-final.csv\\nbackup-final.csv\\nexport-final.csv"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"report-final.csv\nbackup-final.csv\nexport-final.csv"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/common-suffix", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "report-final.csv\nbackup-final.csv\nexport-final.csv"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.common_suffix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_chars | 1000000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Repérez la terminaison commune d’une liste
La réponse contient <code>suffix</code>, le nombre de caractères Unicode dans <code>length</code> et <code>line_count</code>.
Exploitez le résultat pour valider et automatiser
L’API renvoie du JSON structuré : testez <code>suffix</code> selon votre convention, utilisez <code>length</code> pour retirer exactement ce nombre de caractères avec du code compatible Unicode, ou journalisez <code>line_count</code> comme preuve du lot contrôlé. Le navigateur convient aux contrôles rapides ; chaque requête API coûte $0.002 lorsque vous automatisez la règle.
Questions techniques
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. Vous pouvez utiliser la version pour navigateur directement sur cette page.