Diviser un texte en colonnes équilibrées
Répartissez un bloc de texte dans le nombre choisi de colonnes équilibrées sans compter, couper ni réorganiser ses lignes manuellement.
Lancer gratuitement
Le résultat conserve chaque ligne dans son ordre initial, préserve les lignes vides volontaires et fournit à la fois la liste des lignes de chaque colonne et un texte prêt à afficher. Cet outil convient aux programmes, listes, scripts, étiquettes et autres contenus structurés par lignes qui nécessitent une présentation côte à côte soignée. Cette opération déterministe fonctionne dans le navigateur ou de façon automatisée par API.
Transformez une longue liste en mise en page équilibrée
Collez le texte complet et choisissez le nombre de colonnes nécessaire à la présentation finale. Le séparateur considère le contenu comme une suite ordonnée de lignes, puis la répartit en groupes contigus dont les tailles ne diffèrent jamais de plus d’une ligne. Lorsque la division n’est pas exacte, les premières colonnes reçoivent les lignes restantes. Par exemple, sept lignes réparties en trois colonnes forment des groupes de trois, deux et deux. Le résultat reste ainsi prévisible sans le déséquilibre visuel que créerait le placement de tous les restes dans la dernière colonne. Chaque colonne renvoyée contient sa position à partir de un, la liste de ses lignes et un texte joint par des sauts de ligne. Utilisez la liste pour afficher des éléments ou des cellules et le texte pour insérer une colonne entière dans un champ brut. L’ordre de lecture initial demeure intact de la première à la dernière colonne, sans tri ni interprétation du contenu.
Comprenez le traitement des lignes et des espaces vides
Les limites sont reconnues avec les sauts Unix, les fins de ligne Windows ou les anciens retours chariot. La sortie normalise le texte combiné de chaque colonne avec des sauts de ligne, ce qui garantit aux scripts un résultat stable entre systèmes d’exploitation. Les lignes vides ont un sens et restent des chaînes vides dans les listes ; elles comptent dans l’équilibrage, car leur suppression pourrait modifier des paragraphes, des vers, des formulaires ou des notes soigneusement espacées. Même une valeur de texte vide représente une ligne vide, conformément au découpage cohérent d’un champ textuel. Le nombre demandé de colonnes est respecté exactement. Si vous demandez plus de colonnes que de lignes, les colonnes supplémentaires contiennent une liste et un texte vides. Cette précision est utile lorsque la mise en page possède déjà un nombre fixe de panneaux. Aucun mot n’est ajusté, mesuré, coupé ou déplacé : préparez tout retour automatique avant l’appel.
Affichez, exportez ou automatisez le résultat en toute fiabilité
Dans une interface côte à côte, parcourez les colonnes dans l’ordre et placez chacune dans un conteneur de largeur identique. À l’intérieur, affichez les lignes de la liste pour conserver les rangées vides ou placez le texte dans un élément préformaté. Un flux d’impression peut reprendre la même structure pour des colonnes de page, des étiquettes, des fiches ou un modèle documentaire. L’algorithme est déterministe et n’utilise ni réseau, ni valeur aléatoire, ni horodatage : une entrée identique produit toujours la même sortie. Il convient donc aux systèmes de compilation, chaînes éditoriales, tests reproductibles et transformations mises en cache. La validation est volontairement stricte : le texte doit être une chaîne et le nombre de colonnes un entier au moins égal à un. Une valeur incorrecte échoue au lieu d’être arrondie ou devinée. Le navigateur répond aux besoins ponctuels ; une requête API coûte $0.002 lorsque cette transformation doit être automatisée.
Cas d’usage
Mettez en forme un programme d’événement
Répartissez une liste ordonnée d’intervenants ou de séances en blocs équilibrés pour un programme compact imprimé ou affiché.
Créez une liste de contrôle multicolonne
Transformez des tâches organisées par lignes en un nombre fixe de panneaux tout en conservant chaque élément et son ordre.
Préparez des mises en page éditoriales
Transmettez des groupes équilibrés de lignes à un modèle de document, un générateur d’étiquettes, un site statique ou une présentation.
Questions fréquentes
Comment les lignes restantes sont-elles réparties ?
Les tailles diffèrent au maximum d’une ligne. Si la division n’est pas exacte, chacune des premières colonnes reçoit une ligne supplémentaire.
Les lignes vides sont-elles conservées ?
Oui. Elles restent des chaînes vides et comptent comme lignes, afin de préserver les espacements de paragraphes et les blancs volontaires.
Que se passe-t-il si je demande plus de colonnes que de lignes ?
Le nombre demandé est renvoyé. Les colonnes sans ligne attribuée contiennent une liste de lignes vide et un texte vide.
Les longues lignes sont-elles ajustées à une largeur ?
Non. Seules les lignes existantes sont équilibrées ; leur largeur n’est ni mesurée ni ajustée, et le texte n’est pas modifié.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. Le même séparateur déterministe peut également fonctionner directement dans le navigateur.
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/text/split-columns \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf","column_count":3}'const res = await fetch("https://api.kit.forhosting.com/text/split-columns", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf",
"column_count": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/split-columns",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf",
"column_count": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/split-columns", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Alpha\\nBravo\\nCharlie\\nDelta\\nEcho\\nFoxtrot\\nGolf","column_count":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf","column_count":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/split-columns", 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": "Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf",
"column_count": 3
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.split_columns",
"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_tokens | 20000 |
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. |