تنسيق النص في أعمدة ثابتة العرض
حوّلوا صفوف النص المنظمة إلى أعمدة مرتبة ثابتة العرض من دون عدّ المسافات يدوياً. أدخلوا الصفوف وعدد الأعمدة المتوقع، فتقيس الأداة أعرض قيمة في كل موضع ثم تضيف مسافات إلى كل حقل حتى يبلغ ذلك العرض.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
تتضمن النتيجة عروض الأعمدة القابلة لإعادة الاستخدام، والحقول المكتملة، ونصاً متعدد الأسطر جاهزاً للعرض. تُرفض الصفوف غير المتسقة بدلاً من إنتاج نتيجة ملتبسة، ولذلك تناسب هذه الإمكانية السجلات وتقارير سطر الأوامر ورسائل البريد النصية والوثائق.
جهّزوا الصفوف وفق عقد واضح للأعمدة
ابدؤوا بقائمة من الصفوف، على أن يكون كل صف قائمة من الحقول النصية. اضبطوا column_count على العدد الدقيق للحقول التي يجب أن يحتوي عليها كل صف. يمكن أن يكون الصف الأول عنواناً، لكنه ليس إلزامياً ولا يحظى بمعاملة خاصة؛ فهو يدخل في حساب العرض مثل سائر القيم. حافظوا على النص كما تريدون عرضه تماماً، بما في ذلك حالة الأحرف والمسافات الداخلية المقصودة. السلسلة الفارغة حقل صالح، وتُستكمل إلى العرض الذي تحدده القيم الأخرى في العمود نفسه. يوفر العدد الصريح فحصاً مهماً عند تجميع الصفوف من مصادر مختلفة. إذا احتوى صف على حقول أقل أو أكثر من المطلوب، يفشل الطلب بخطأ إدخال يحدد الصف وعدد حقوله الفعلي. وهكذا لا تؤدي قيمة مفقودة إلى نقل الحقول اللاحقة بصمت إلى أعمدة مرئية خاطئة. للحصول على نتيجة متوقعة، وحّدوا علامات الجدولة وفواصل الأسطر الموجودة داخل الحقول قبل إرسالها.
افهموا قياس العرض وإضافة المسافات
تفحص الأداة كل عمود على حدة وتسجل أكبر عدد من المحارف في ذلك الموضع. ثم تضيف مسافات عادية إلى نهاية كل حقل حتى يبلغ العرض المسجل، كما تضع مسافة فاصلة واحدة بين الحقول المتجاورة. يُقاس العرض بنقاط ترميز Unicode بدلاً من وحدات تخزين UTF-16 في JavaScript، فلا تُحسب المحارف التكميلية الشائعة مرتين عن طريق الخطأ. ويتجنب الحساب عمداً افتراضات خاصة بالطرفية بشأن العلامات المركبة وعلامات الجدولة وعرض الرموز التعبيرية والمحارف الشرق آسيوية العريضة، لأن مظهرها يختلف باختلاف الخط وأداة العرض. تنتظم الحروف والأرقام وعلامات الترقيم المعتادة بصورة موثوقة عند استعمال خط ثابت العرض. ويُستكمل الحقل الأخير أيضاً لأن عقد العرض ينطبق على جميع الحقول. تعرض الاستجابة كلاً من مصفوفات الحقول المكتملة والنص الموحّد، فلا تحتاجون إلى تحليل الأسطر المنسقة لاستعادة البنية.
استخدموا النتيجة في مسارات نصية موثوقة
اختاروا صيغة الإخراج المناسبة للخطوة التالية. استخدموا aligned_text عند الحاجة إلى كتلة كاملة لطرفية أو كتلة شيفرة أو تقرير نصي أو رسالة بخط ثابت العرض. واستخدموا aligned_rows لإضافة بادئات أو حدود أو مسافات بادئة أو ألوان مع الحفاظ على الحشو المحسوب. تساعد مصفوفة column_widths نظاماً آخر على تنسيق صفوف إضافية بالأبعاد نفسها. لا تزيل العملية المسافات من القيم، ولا ترتب الصفوف، ولا تستنتج العناوين، ولا تقتطع المحتوى الطويل، ولا تغيّر حالة الأحرف. لذلك فهي مناسبة للمُعرّفات والبيانات التي تكون فيها المسافات ذات دلالة. تمنع الحدود المنشورة للصفوف والأعمدة ومحارف الحقول استهلاك الذاكرة بلا سقف. ولعدم استخدام الشبكة أو العشوائية أو الساعة أو المقارنات المعتمدة على الإعداد المحلي، ينتج إدخال JSON نفسه إخراج JSON نفسه دائماً. تبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل طلب.
حالات الاستخدام
تنسيق تقارير سطر الأوامر
حاذوا الأسماء والحالات والمدد والمُعرّفات قبل إنشاء تقرير ثابت العرض يسهل استعراضه.
إنشاء ملخصات بنص عادي
أنشئوا جداول مقروءة للبريد والتذاكر والوثائق والمحادثات التي لا تعتمد على جداول HTML.
التحقق من التصديرات الصفية
اكتشفوا الحقول الناقصة أو الزائدة مع إنتاج معاينة ثابتة ومحاذاة للسجلات المولدة.
الأسئلة الشائعة
ما كلفة الطلب الواحد؟
تبلغ كلفة كل طلب API مقدار $0.002. ويمكن للصفحة أيضاً تشغيل أداة التنسيق محلياً داخل المتصفح.
ماذا يحدث إذا كان عدد الحقول في صف غير صحيح؟
يفشل الطلب بخطأ إدخال يحدد أول صف غير متسق وعدد حقوله الفعلي والعدد المتوقع.
هل تُقتطع القيم أو تتغير؟
لا. يبقى النص الأصلي كما هو، ولا تُضاف سوى مسافات الحشو النهائية ومسافات الفصل.
هل يدعم النص المكتوب بترميز Unicode؟
نعم. يستخدم العرض نقاط ترميز Unicode، لكنه لا يقدّر المظهر الخاص بالمحارف العريضة أو المركبة في كل عارض.
هل يُستكمل العمود الأخير أيضاً؟
نعم. يُستكمل كل حقل إلى عرض أطول قيمة في عموده، بما في ذلك الحقل الأخير من كل صف.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/text/text-column-align \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}'const res = await fetch("https://api.kit.forhosting.com/text/text-column-align", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/text-column-align",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/text-column-align", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"rows":[["Name","Role","City"],["Ada","Engineer","London"],["Grace Hopper","Admiral","New York"]],"column_count":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/text-column-align", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"rows": [
[
"Name",
"Role",
"City"
],
[
"Ada",
"Engineer",
"London"
],
[
"Grace Hopper",
"Admiral",
"New York"
]
],
"column_count": 3
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.text_column_align",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_rows | 10000 |
max_columns | 100 |
max_field_chars | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |