تحويل التاب إلى مسافات
غالبًا ما تخلط محررات الكود ولصق الطرفية ومصادر markdown بين أحرف الجدولة غير المرئية والمسافات، فتبدو المسافة البادئة سليمة في أداة وتنزاح في أخرى.
شغّل الأداة مجانًا
تقوم أداة تحويل التاب إلى مسافات هذه بتوسيع كل تاب U+0009 إلى عرض ثابت من مسافات ASCII—أربعة افتراضيًا، أو أي عدد صحيح من واحد إلى ستة عشر—مع الإبقاء على فواصل الأسطر والحروف والمسافات الموجودة دون تغيير. تحصلون على JSON مستقر يتضمن النص الموسَّع وعدد التابات المستبدلة والأطوال قبل وبعد لأغراض التدقيق والـfixtures. تفشل السلاسل الفارغة أو التي تحتوي على مسافات بيضاء فقط بمدخل غير صالح حتى لا تخزّن الأنابيب تحويلات فارغة. استخدموها عند توحيد المستودعات وفق أدلة أسلوب تعتمد المسافات فقط، أو تجهيز مقتطفات لمتصفحات تعرض التاب بشكل غير متسق، أو تنظيف الصادرات قبل النشر. يعمل الودجت المجاني في المتصفح بالكامل على جهازكم؛ وتفرض واجهة API المدفوعة مسبقًا $0.002 لكل عنصر ناجح عندما تحتاج الخوادم وSDK إلى خطوة التوسيع الحتمية نفسها على نطاق واسع.
طريقة الاستخدام
أدخل القيم في النموذج أعلاه. تتحقق الأداة منها قبل الحساب ثم تعرض النتيجة في الصفحة نفسها.
راجع بياناتك
اتبع التسميات والوحدات الموضحة بجانب كل حقل. إذا كانت قيمة مفقودة أو خارج النطاق، توضح الصفحة الحقل الذي يحتاج إلى تصحيح.
أعد الحساب أو نفّذه آليًا
استخدم أداة الويب للفحوص الفردية، واستخدم الواجهة البرمجية عند دمج الإمكانية نفسها في سير عمل آلي.
حالات الاستخدام
احصل على النتيجة الآن
أدخل مجموعة من القيم وشاهد النتيجة من دون إعداد جدول بيانات أو برنامج نصي.
قارن السيناريوهات
غيّر قيمة واحدة في كل مرة وأعد الحساب لمعرفة ما الذي يؤثر في النتيجة.
أتمت العمل المتكرر
استخدم الواجهة البرمجية عندما تحتاج إلى تشغيل الحساب نفسه داخل منتجك أو سير عملك.
الأسئلة الشائعة
كيف أحوّل التاب إلى مسافات بهذه الأداة؟
أرسلوا JSON مع text كسلسلة غير فارغة. اختياريًا عيّنوا spaces_per_tab (1–16، الافتراضي 4). حقل result في الاستجابة هو السلسلة بعد توسيع كل تاب إلى ذلك العدد من المسافات.
ماذا يحدث إذا كان text فارغًا؟
تفشل السلاسل الفارغة والتي تحتوي على مسافات بيضاء فقط بـinvalid_input ولا تُحاسب.
هل تعيد محاذاة مستويات الكود المتداخلة؟
لا. تستبدل فقط أحرف الجدولة بعرض ثابت من المسافات. لاكتشاف مستويات المسافة البادئة وتطبيعها استخدموا قدرة مخصّصة لتطبيع المسافة البادئة.
هل أداة تحويل التاب إلى مسافات مجانية؟
تعمل أداة المتصفح مجانًا على جهازكم. تستدعي استدعاءات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل عنصر ناجح؛ ولا تُحاسب إخفاقات التحقق.
ماذا يعني tabs_replaced؟
هو عدد أحرف الجدولة U+0009 التي وُسِّعت. chars_added هو chars_after ناقص chars_before ويعكس مقدار نمو السلسلة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/tabs-to-spaces \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function hi() {\n\treturn true;\n}"}'const res = await fetch("https://api.kit.forhosting.com/str/tabs-to-spaces", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function hi() {\n\treturn true;\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/tabs-to-spaces",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function hi() {\n\treturn true;\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/tabs-to-spaces", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function hi() {\\n\\treturn true;\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function hi() {\n\treturn true;\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/tabs-to-spaces", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "function hi() {\n\treturn true;\n}"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.tabs_to_spaces",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |