Convertisseur de formats de fichiers
Convertissez instantanément entre 8 formats de fichiers texte courants. CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON et INI↔JSON – tous bidirectionnels, le tout dans votre navigateur. Téléchargez des fichiers ou collez du texte, détectez automatiquement le format et téléchargez les résultats.
Supported Conversions
CSV ↔ TSV
Comma-separated ↔ Tab-separated
JSON ↔ XML
Structured data interchange
Markdown ↔ HTML
Text markup to web markup
YAML ↔ JSON
Human-readable config data
INI ↔ JSON
Windows config to structured data
1 $
1 $
(.*?) /gi, '$1 ') // Règles horizontales .replace(/ /gi, '--- ') // Supprimer les balises restantes .replace(/ ]+>/g, '') // Nettoyer les espaces supplémentaires .replace(/ /g, ' ') .trim(); retourner md; } function yamlToJson(input: string): string { try catch } function simpleYamlParse(yaml: string): Record { résultat const : Record = ; lignes const = yaml.split(' '); pour (const ligne de lignes) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith('#')) continue ; const colonIdx = trimmed.indexOf(':'); if (colonIdx > 0) } renvoie le résultat ; } function jsonToYaml(input: string): string { try { const obj = JSON.parse(input); function toYaml(data : inconnu, indent = '') : string { if (data === null) return 'null '; if (typeof data === 'string') { if (data.includes(':') || data.includes('#') || data.includes(' ')) return `"$ " `; retourner `$` ; } if (type de données === 'numéro' || type de données === 'booléen') return `$ `; if (Array.isArray(data)) { return data.map(item => `$ - $ `).join(' ') + ' '; } if (type de données === 'objet') { let yml = ''; for (const [key, val] of Object.entries(data as Record )) { if (typeof val === 'object' && val !== null && !Array.isArray(val)) { yml += `$ $ : $ `; } else if (Array.isArray(val)) { yml += `$ $ : `; for (élément const de val) { yml += `$ - $ `; } yml += ' '; } else { yml += `$ $ : $ `; } } renvoie yml ; } retour ''; } return toYaml(obj).trim(); } catch } function iniToJson(input: string): string { try { résultat const : Record > = ; laissez currentSection = 'général'; for (const line of input.split(' ')) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#')) continue; const sectionMatch = trimmed.match(/^\[(.+)\]$/); if (sectionMatch) { currentSection = sectionMatch[1].trim(); if (!result[currentSection]) result[currentSection] = ; continuer; } const eqIdx = trimmed.indexOf('='); if (eqIdx > 0) { const key = trimmed.slice(0, eqIdx).trim(); let valeur : chaîne | numéro | boolean = trimmed.slice(eqIdx + 1).trim(); si ((value.startsWit h('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) if (value === 'true') value = true; sinon if (value === 'false') value = false; sinon if (!isNaN(Number(value)) && value !== '') value = Number(value); if (!result[currentSection]) result[currentSection] = ; result[currentSection][key] = valeur ; } } return JSON.stringify(result, null, 2); } catch } function jsonToIni(input: string): string { try { const obj = JSON.parse(input); laissez ini = ''; for (const [section, clés] de Object.entries(obj as Record )) { ini += `[$ ] `; if (typeof keys === 'object' && keys !== null) { for (const [key, value] of Object.entries(keys as Record )) { ini += `$ =$ `; } } ini += ' '; } return ini.trim(); } catch } /* -- Routeur de conversion -- */ function convert(from: Format, to: Format, input: string): string { if (from === to) return input; // CSV ↔ TSV si (de === 'csv' && à === 'tsv') return csvToTsv(input); if (de === 'tsv' && à === 'csv') return tsvToCsv(input); // JSON ↔ XML if (de === 'json' && à === 'xml') return jsonToXml(input); if (de === 'xml' && à === 'json') return xmlToJson(input); // Markdown ↔ HTML if (de === 'markdown' && à === 'html') return markdownToHtml(input); if (de === 'html' && à === 'markdown') return htmlToMarkdown(input); // YAML ↔ JSON if (de === 'yaml' && à === 'json') return yamlToJson(input); if (de === 'json' && à === 'yaml') return jsonToYaml(input); // INI ↔ JSON si (de === 'ini' && à === 'json') return iniToJson(input); if (de === 'json' && à === 'ini') return jsonToIni(input); return `La conversion de $ en $ n'est pas encore prise en charge.`; } /* -- Composant principal -- */ export function ToolSection() { const [inputText, setInputText] = useState(''); const [outputText, setOutputText] = useState(''); const [fromFormat, setFromFormat] = useState ('csv'); const [toFormat, setToFormat] = useState ('tsv'); const [detectedFormat, setDetectedFormat] = useState (null); const [copié, setCopied] = useState(false); inconvénients t [erreur, setError] = useState(''); const [showDetails, setShowDetails] = useState(false); const fileInputRef = useRef (null); const handleConvert = useCallback(() => { if (!inputText.trim()) setError(''); try catch (e) { setError(`Erreur de conversion : $ `); setOutputText(''); } }, [inputText, fromFormat, toFormat]); const handleDetect = useCallback(() => { if (!inputText.trim()) const détecté = detectFormat(inputText); setDetectedFormat(détecté); if (détecté) }, [inputText]); const handleSwap = useCallback(() => , [fromFormat, toFormat, inputText, outputText]); const handleCopy = useCallback(() => { navigator.clipboard.writeText(outputText).then(() => ); }, [outputText]); const handleDownload = useCallback(() => { const format = ALL_FORMATS[toFormat]; const blob = new Blob([outputText], ); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `converted$ `; a.click(); URL.revokeObjectURL(url); }, [outputText, toFormat]); const handleFileUpload = useCallback((e: React.ChangeEvent ) => { const file = e.target.files?.[0]; if (!file) return; const reader = new FileReader(); reader.onload = (ev) => { const text = ev.target?.result as string; setInputText(text); const détecté = detectFormat(text); setDetectedFormat(détecté); if (détecté) }; reader.readAsText(file }, []); const handleReset = useCallback(() => , []); const fromConfig = ALL_FORMATS[fromFormat]; const toConfig = ALL_FORMATS[toFormat]; const FromIcon = fromConfig.icon; const ToIcon = toConfig.icon; return ( Convertisseur de format de fichier de {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} À {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} Détecter le format {detectedFormat && ( Détecté : )} {CONVERSION_PAIRS.slice(0, 5).map((pair) => ( } className= > ))} Entrée ( ) Télécharger la sortie ( ) {outputText && ( Télécharger )} Convertir en Effacer {erreur && ( )} Conversions prises en charge {[ , , , , , ].map((item) => (
Détection du format : l'outil analyse votre texte saisi pour deviner le format. Il vérifie les accolades JSON, les balises XML, les paires clé-valeur YAML, les sections INI, les virgules CSV, les onglets TSV et les modèles de titre/liste Markdown.
CSV/TSV : échange de délimiteur simple. CSV utilise des virgules, TSV utilise des tabulations. Les lignes sont conservées.
JSON/XML : JSON est analysé en objets et sérialisé au format XML avec des attributs typés. XML est analysé avec un simple analyseur basé sur regex qui gère les structures imbriquées de base.
Markdown/HTML : les en-têtes Markdown, les caractères gras, italiques, les liens, les blocs de code et les listes sont convertis en éléments HTML. HTML-to-Markdown inverse le processus.
YAML/JSON : les paires clé-valeur YAML (plates) sont analysées en un objet JSON. Les objets JSON sont sérialisés au format YAML de base.
INI/JSON : les sections INI deviennent des clés d'objet JSON. Les paires clé=valeur deviennent des propriétés. JSON est sérialisé au format INI.
Pourquoi utiliser le convertisseur de format de fichier ?
Convertissez instantanément entre 8 formats de fichiers texte dans votre navigateur - pas de téléchargement, pas de serveur, pas d'inscription.
- Conversion bidirectionnelle : convertissez dans les deux sens : CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON et INI↔JSON. Échangez les formats en un seul clic pour inverser la conversion.
- Détection intelligente du format : collez n'importe quel texte et cliquez sur "Détecter le format" - l'outil identifie automatiquement CSV, TSV, JSON, XML, Markdown, HTML, YAML ou INI en fonction des modèles de contenu. Pas besoin de spécifier manuellement le format source.
- Prise en charge du téléchargement de fichiers : téléchargez des fichiers directement au lieu de copier-coller. Le convertisseur lit le contenu du fichier et détecte automatiquement le format. Fonctionne avec les fichiers .csv, .tsv, .json, .xml, .md, .html, .yaml, .ini et .txt.
- Résultats de copie et de téléchargement : copiez la sortie convertie dans le presse-papiers en un seul clic ou téléchargez-la sous forme de fichier au format cible. Chaque format utilise son type MIME et son extension de fichier corrects pour une intégration transparente.
Scénarios de conversion courants
Comblez les écarts de format entre les outils, les langages et les plates-formes grâce à des conversions instantanées.
- Migration des données de développeur : convertissez les réponses de l'API JSON en XML pour l'intégration de systèmes existants, ou transformez les configurations XML en JSON pour les applications JavaScript modernes. CSV vers JSON rapide pour la visualisation des données frontales.
- Préparation des données de feuille de calcul : convertissez les exportations CSV d'Excel/Google Sheets vers les outils TSV pour Unix, ou transformez les sauvegardes de la base de données TSV en CSV pour l'importation de feuilles de calcul. Préserve toutes les lignes et colonnes.
- Formatage du document : convertissez la documentation Markdown en HTML pour la publication ou supprimez les e-mails HTML pour nettoyer Markdown pour le contrôle de version. Fonctionne parfaitement pour les fichiers README, les documents et les brouillons de blog.
- Gestion de la configuration : convertissez les configurations YAML (Docker, Kubernetes, CI/CD) en JSON pour le traitement par programmation, ou transformez les fichiers INI (PHP, anciennes configurations Windows) en JSON structuré pour des outils modernes.
- Web Scraping et API : convertissez le HTML brut extrait des pages Web en Markdown pour une lecture propre, ou transformez les réponses de l'API JSON en YAML pour les fichiers de configuration. Gérez les données quel que soit le format que vous recevez.
- Échange de données multiplateforme : comblez les écarts de format entre les différents outils et plates-formes. Convertissez les configurations INI en JSON pour les applications Node.js ou transformez les exportations de données XML au format CSV pour les parties prenantes non techniques.
À propos du convertisseur de format de fichier
Convertissez entre CSV, TSV, JSON, XML, Markdown, HTML, YAML et INI - instantanément et en privé.
- Qu'est-ce que le convertisseur de format de fichier ? : Un outil basé sur un navigateur pour convertir entre 8 formats de fichiers texte courants : CSV, TSV, JSON, XML, Markdown, HTML, YAML et INI. Les 5 paires de conversion sont bidirectionnelles : convertissez dans les deux sens en un seul clic.
- Comment fonctionnent les conversions : CSV/TSV utilisent un simple échange de délimiteurs. JSON/XML analyse les données structurées et les sérialise au format cible. Markdown/HTML convertit le balisage de texte en balisage Web et inversement. YAML/JSON gère les configurations clé-valeur plates. INI/JSON transforme les sections de configuration de style Windows en objets structurés.
- 100 % privé et hors ligne : toutes les conversions s'effectuent dans votre navigateur. Aucune donnée n'est envoyée à un serveur. Pas de téléchargements, pas de files d'attente de traitement, pas d'API tierces. Après le chargement de la première page, le convertisseur fonctionne entièrement hors ligne.
- Pour les développeurs et les utilisateurs de données : conçu pour les développeurs de logiciels, les analystes de données, les rédacteurs techniques, les ingénieurs DevOps et toute personne travaillant avec des données textuelles structurées. La détection intelligente du format vous fait gagner du temps en identifiant automatiquement votre format d'entrée.