Normaliser tirets et traits d’union
Unifiez des tirets qui se ressemblent sans être identiques : dans une phrase avec la plage de pages 10–15, un tiret cadratin, un signe moins et un tiret pleine chasse, 5 caractères deviennent des traits d'union ordinaires. Trois styles au choix. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Pages 10–15 — revised − 2 notes; co‑author and full-width.
- Texte
- Pages 10-15 - revised - 2 notes; co-author and full-width.
- Style
- Hyphen
- Caractère
- -
- Remplacements
- 5
Les textes copiés depuis des sites, PDF, documents bureautiques et systèmes éditoriaux contiennent souvent plusieurs caractères qui ressemblent à des tirets, mais réagissent différemment lors d’une recherche, d’une validation, d’un tri ou dans du code. Ce normaliseur convertit les traits d’union Unicode, tirets demi-cadratins et cadratins, signes moins et variantes associées en un style cohérent. Choisissez un trait d’union, un tiret demi-cadratin ou cadratin, puis obtenez le texte nettoyé et le nombre exact de caractères modifiés.
Pourquoi des tirets similaires créent de vrais problèmes
Le trait d’union-signe moins, le tiret demi-cadratin, le tiret cadratin, le signe moins mathématique et le trait d’union insécable peuvent sembler presque identiques, surtout dans une police proportionnelle. Les ordinateurs ne les considèrent pourtant pas comme interchangeables. Un code produit copié depuis un PDF peut échouer lors d’une recherche exacte dans une base, car il contient un trait d’union insécable.
Une valeur négative collée depuis un logiciel de composition peut ne pas être reconnue comme nombre parce que son signe est mathématique plutôt que le caractère ASCII attendu par l’importateur. Les index de recherche, expressions régulières, détections de doublons, noms de fichiers et outils en ligne de commande peuvent également réagir différemment à ces points de code. Le problème est plus difficile à repérer lorsque le caractère est invisible, comme un trait d’union conditionnel inséré pour la césure.
La normalisation supprime cette ambiguïté en remplaçant les caractères reconnus par un caractère choisi. Les lettres, nombres, espaces, signes et sauts de ligne restent inchangés : l’opération demeure ciblée et prévisible, sans devenir une réécriture typographique générale.
Choisissez le style adapté à votre destination
Utilisez le trait d’union pour les identifiants, données importées, échanges en texte brut, clés de recherche, noms de fichiers, code source et systèmes qui attendent de l’ASCII. C’est le choix le plus sûr lorsque la compatibilité prime sur la typographie. Choisissez le demi-cadratin pour un texte éditorial dont la charte l’emploie dans les plages numériques ou les relations, par exemple les pages et les itinéraires.
Choisissez le cadratin lorsqu’un flux de publication exige des incises uniformes. Le caractère sélectionné remplace chaque tiret reconnu du texte, y compris les traits d’union ASCII existants si la cible est un demi-cadratin ou un cadratin. Ce comportement uniforme est volontaire : l’outil normalise des caractères, mais ne détermine pas si une marque représente un mot composé, une soustraction, une plage ou une incise.
Une telle interprétation dépendrait de la langue et pourrait modifier silencieusement le sens. Si votre document exige plusieurs styles selon leur rôle grammatical, normalisez uniquement les sélections concernées ou appliquez des règles éditoriales contextuelles après ce nettoyage mécanique.
Intégrez une sortie déterministe à vos contrôles
La réponse contient le texte normalisé, le style sélectionné, le caractère cible littéral et le nombre de caractères réellement modifiés. Un tiret déjà identique à la cible est conservé et n’augmente pas le compteur. Le résultat convient ainsi aux contrôles qualité automatisés : un processus peut refuser une typographie inattendue, consigner l’ampleur des modifications ou vérifier qu’un second passage indique zéro changement.
L’algorithme est déterministe et n’effectue aucun appel réseau, aucune détection de langue, aucune opération d’intelligence artificielle ni transformation aléatoire. Il parcourt une entrée de taille limitée et remplace uniquement une famille documentée de caractères Unicode apparentés aux tirets. Les espaces sont volontairement préservés : un cadratin entouré d’espaces les garde lorsqu’il devient un trait d’union, tandis qu’un tiret non espacé le reste.
La normalisation des caractères n’est donc pas mêlée à une convention subjective d’espacement. Pour des imports reproductibles, exécutez cette opération avant la segmentation, la correspondance exacte, l’analyse numérique, la création de slugs ou la déduplication, puis appliquez séparément vos règles métier de ponctuation et d’espacement.
Cas d’usage
Nettoyer des identifiants importés
Convertissez les traits d’union insécables cachés et les tirets typographiques avant de comparer codes produit, références de compte ou identifiants de document.
Préparer un texte brut fiable
Uniformisez la ponctuation copiée depuis des PDF et documents bureautiques avant une recherche, une validation ou un traitement de données.
Appliquer une charte éditoriale
Convertissez des tirets mélangés en un seul style demi-cadratin ou cadratin avant une relecture ciblée.
Questions fréquentes
Quels styles de sortie sont proposés ?
Vous pouvez convertir les caractères reconnus en trait d’union-signe moins ASCII, tiret demi-cadratin ou tiret cadratin.
Les espaces autour des tirets sont-ils modifiés ?
Non. Les espaces et sauts de ligne existants sont conservés exactement ; seuls les caractères reconnus sont remplacés.
L’outil distingue-t-il ponctuation, plage et soustraction ?
Non. Il normalise mécaniquement les caractères sans déduire leur sens grammatical ou mathématique.
Que signifie le nombre de remplacements ?
Il compte les caractères reconnus dont le point de code d’origine différait du caractère cible choisi.
Pourquoi un code produit copié d'un PDF échoue-t-il à une recherche exacte ?
Il peut contenir un trait d'union insécable ou un signe moins qui ressemble à un trait d'union ordinaire, mais qui est un autre caractère. En ramenant chaque tiret au trait d'union simple, la recherche retrouve le code.
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/normalize-dashes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Pages 10–15 — revised − 2 notes"}'const res = await fetch("https://api.kit.forhosting.com/str/normalize-dashes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Pages 10–15 — revised − 2 notes"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/normalize-dashes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Pages 10–15 — revised − 2 notes"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/normalize-dashes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Pages 10–15 — revised − 2 notes"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Pages 10–15 — revised − 2 notes"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/normalize-dashes", 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": "Pages 10–15 — revised − 2 notes"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.normalize_dashes",
"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 | 200000 |
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. |
Questions techniques
Quel est le tarif ?
L’exécution est gratuite dans votre navigateur sur cette page, ou facturée $0.002 par requête API.