موضع السلسلة الفرعية
في «The kit parses logs: ERROR at line 12, then INFO, then ERROR again.» تقع أول ERROR عند الموضع 21، في السطر 1 والعمود 22، وتنتهي قبل 26. تُبحث النقاط والأقواس كنص عادي. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- احسب
- ERROR
- الفهرس
- 21
- البداية
- 0
- الطول
- 67
- طول عبارة البحث
- 5
إيجاد أول ظهور لعبارة هو الخطوة الأولى في أغلب خطوط الأنابيب النصية: تحددون علامة ثم تقتطعون أو تحللون أو تبرزون من فهرس المحارف ذاك. تأخذ أداة موضع السلسلة الفرعية نص المصدر ومصطلح بحث غير فارغ وتعيد فهرس المحارف الصفري لأول تطابق حرفي، إضافة إلى ما إذا وُجد، وإزاحة النهاية الحصرية، والسطر والعمود الواحديّين للقفز إلى الإصابة في محرر. يتيح start الاختياري الاستئناف بعد تطابق سابق. تغطي المطابقة الاختيارية بلا حالة أحرف المسودات المختلطة. تفشل مصطلحات البحث الفارغة بإدخال غير صالح حتى لا تعامل المهام الجماعية السلسلة الفارغة كتطابق عند كل إزاحة.
ماذا يعني إيجاد موضع سلسلة فرعية ومتى يُستخدم
إيجاد موضع سلسلة فرعية يعني مسح سلسلة المصدر من اليسار — أو من إزاحة start اختيارية — والتوقف عند أول تطابق حرفي غير متداخل لمصطلح البحث، والإبلاغ عن فهرس المحارف لتلك الإصابة حتى يتمكن خطوة لاحقة من الاقتطاع أو التحليل أو الإبراز من هناك. المطابقة حرفية: إن بحثتم عن نقطة أو قوس أو معقف فهذه المحارف نص صريح وليست صيغة تعبير نمطي، فتبقى الأداة قابلة للتوقع لغير المطوّرين وللخطوط التي يجب ألا تُفاجأ بالرموز الخاصة.
فضّلوا هذه الحاسبة عندما تكون نية البحث إيجاد موضع سلسلة فرعية، أو فهرس سلسلة، أو تحديد أول ظهور، أو الحصول على إزاحة رمز. تشمل المصادر النموذجية أسطر السجل حيث تحتاجون أول علامة ERROR، ومقتطفات الإعداد حيث يجب إيجاد مفتاح قبل قطع قيمة، وHTML أو markdown حيث يبدأ فاصل عنوان قسمًا، وخلايا CSV أو TSV حيث يبدأ فاصل أو حقل مقتبس. تطوي المطابقة الاختيارية بلا حالة أحرف حالة الحروف فتُلتقط أول Hello أو HELLO أو hello دون سرد المتغيرات.
لا تستخدموا هذا المنتج عندما تحتاجون إعادة كتابة التطابق — فتلك نية SEO مختلفة تخدمها أدوات استبدال الأول والبحث والاستبدال — ولا عندما تحتاجون سرد كل ظهور أو مجموعات التقاط أو lookaround أو محرك تعبير نمطي متعدد الأسطر.
عقد الإدخال ورفض البحث الفارغ وقراءة الاستجابة
القيمة الافتراضية ل start الاختياري هي صفر وهو فهرس UTF-16 الصفري حيث يبدأ المسح، فتقدرون على الاستئناف بعد إصابة سابقة دون إعادة مسح البادئة. يُحدّ الطول بمئة ألف محرف حتى يبقى مسح المتصفح وWorker محدودًا. عند وجود تطابق تتضمن الاستجابة أيضًا position كالفهرس البشري الواحدي، وend كإزاحة النهاية الحصرية، وline وcolumn كإحداثيات محرر واحدية، وmatched كالقطعة الدقيقة عند الإصابة حتى تُظهر بحثًا بلا حالة الأحرف الكتابة الأصلية.
التطابق الغائب نجاح صالح: found خطأ وindex سالب واحد، وهي النتيجة الصادقة لكومة قش لا تحتوي الإبرة. استخدموا index مع slice عندما سيقطع برنامج الباقي؛ وline وcolumn عندما يجب أن تمرّر واجهة إلى الإصابة؛ وfound وحده عندما لا يهم البوابة إلا وجود العلامة.
الاستخدامات الشائعة والحدود العملية
استدعوا أداة موضع السلسلة الفرعية المجانية في المتصفح لفحوص اللصق وعروض الفصول وضمان جودة المحتوى وتحديد سريع دون تثبيت أداة سطح مكتب أو كتابة مقتطفات indexOf في كل لغة. سير عمل نموذجي يجد أول علامة قسم، ويقرأ index وend، ثم يقتطع العنوان الذي يلي. سير آخر يمشي الإصابات المتتالية بإرسال end السابق ك start التالي فيحدد الظهور الثاني وما بعده دون أداة استبدال شامل.
اقرنوا هذه النقطة النهائية باستبدال الأول عندما تحتاج خطوة لاحقة إعادة كتابة تلك الإصابة فقط، أو بالبحث والاستبدال عندما يجب أن يتغير كل تطابق، لكن أبقوا موضع السلسلة الفرعية صفحة هبوط خاصة حتى لا تختلط نية SEO بمحررات تطوّر النص. لا تتوقعوا تخطيًا واعيًا لوسم HTML، ولا حقول دمج مستندات منظمة، ولا فهارس عناقيد وحدات كتابية، ولا ترتيبًا خاصًا بالمحليّة يتجاوز المطابقة القياسية بلا حالة — فتلك مشكلات منفصلة.
ثبّتوا تجهيزات لإصابة عند الإزاحة صفر وإصابة في الوسط واستئناف من start وأول إصابة بلا حالة وتطابق غائب ورفض البحث الفارغ حتى لا تغيّر إعادة الهيكلة الوعد بصمت.
حالات الاستخدام
تحديد أول علامة سجل أو خطأ
يجد المحللون وأدوات الدعم أول ERROR أو TODO أو فاصل، ثم يقتطعون أو يبرزون من فهرس المحارف ذاك دون إعادة كتابة الملف.
استئناف المسح بعد إصابة سابقة
أرسلوا end الحصري السابق ك start لتمشوا الظهور الثاني وما بعده واحدًا تلو الآخر في القوالب والسجلات وملفات الإعداد.
ضمان الجودة والتجهيزات الحتمية
تثبّت أحزمة الاختبار index وfound وline وcolumn حتى تسقط إعادة هيكلة تنتقل إلى الاستبدال أو التعبير النمطي أو تطابق find فارغ التكامل المستمر فورًا.
الأسئلة الشائعة
كيف أجد موضع سلسلة فرعية؟
فهرس الاستجابة هو إزاحة المحارف الصفرية لأول تطابق، أو -1 إن لم يوجد.
هل الفهرس صفري أم واحدي؟
index صفري، وهو العقد نفسه ل String indexOf في JavaScript، فتمررونه إلى slice. عند وجود تطابق يكون position رقم المحرف الواحدي المتوقع في محرر، وline وcolumn واحديان كذلك.
ماذا يحدث إن كان مصطلح البحث فارغًا؟
تُرفض سلسلة find فارغة حتى لا تعامل الخطوط السلسلة الفارغة كتطابق عند كل إزاحة؛ ولا تُحسب تلك الإخفاقات.
هل يدعم find التعبيرات النمطية؟
لا. يُعامل مصطلح البحث دائمًا كسلسلة حرفية. تطابق النقاط والمعاقف وغيرها من رموز التعبير النمطي نفسها حتى يبقى السلوك قابلاً للتوقع للمحررين والمهام الجماعية.
كيف أجد الظهور الثاني؟
أعد البحث واجعل موضع البدء هو نهاية المطابقة الأولى، أي 26 في المثال. يبدأ البحث من هناك ويجد ERROR التالية دون أن يعيد فحص بداية النص.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/index-of \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}'const res = await fetch("https://api.kit.forhosting.com/str/index-of", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/index-of",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/index-of", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The kit parses logs: ERROR at line 12, then INFO, then ERROR again.","find":"ERROR"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/index-of", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "The kit parses logs: ERROR at line 12, then INFO, then ERROR again.",
"find": "ERROR"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.index_of",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 100000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يعمل ودجت المتصفح المجاني على جهازكم؛ وتفرض واجهة API المدفوعة مسبقًا $0.002 لكل عنصر ناجح عندما تحتاج الخوادم وSDK محدد الموضع نفسه بالجملة.
ماذا يعني إيجاد موضع سلسلة فرعية ومتى يُستخدم
يرفع مصطلح البحث الفارغ invalid_input فيحمي المهام الجماعية من الفخ الكلاسيكي لمعاملة السلسلة الفارغة كتطابق بين كل محرف.
عقد الإدخال ورفض البحث الفارغ وقراءة الاستجابة
أرسلوا جسم JSON يتضمن الحقل النصي الإلزامي text مضبوطًا على المصدر الذي تريدون مسحه والحقل النصي الإلزامي find مضبوطًا على مصطلح بحث غير فارغ. القيمة الافتراضية ل case_insensitive الاختيارية هي false للمطابقة الدقيقة للحالة؛ اضبطوه true عندما يجب أن تطابق أول مسودة مختلطة الحالة. تُقبل أسماء بديلة للعملاء القدامى: text أيضًا input أو value أو s أو content أو source أو haystack؛ find ك search أو needle أو substring أو query أو pattern؛ start ك from أو from_index أو offset؛ case_insensitive ك ignore_case أو ci أو insensitive. غياب text أو find أو قيمة غير نصية أو start سالب أو غير صحيح أو سلسلة find فارغة ترفع invalid_input برسالة تسمي المشكلة، ولا تُحسب تلك الإخفاقات على API المدفوعة مسبقًا. عند النجاح تتضمن الاستجابة دائمًا index كإزاحة محارف صفرية أو سالب واحد عند الغياب، وfound كمنطقي، وtext وfind كما طُبّقا، وstart وcase_insensitive كما استُعملا، وlength وfind_length كأطوال محارف، وmethod دائمًا يساوي index_of.
استخدام API والتسعير وسير العمل والحدود العملية
استخدموا API KIT المدفوعة مسبقًا عندما يحتاج نظام إدارة محتوى أو مهمة ETL أو خلفية نماذج أو مكتب دعم أو محلل أو عميل جوال محدد الموضع نفسه تحت الرصيد ب $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تستهلك الرصيد أبدًا بعد رفض المحرك. يمكن لمؤلفي SDK توثيق text وfind كحقلين إلزاميين وعرض مصدر متعدد التطابقات يُعاد فيه الفهرس الأول فقط إضافةً إلى مثال خطأ find فارغ ليرى المدمجون طرفي العقد.
أسئلة تقنية
هل أداة موضع السلسلة الفرعية مجانية؟
تعمل أداة المتصفح مجانًا على جهازكم. تستخدم استدعاءات API رصيد KIT المدفوع مسبقًا ب $0.002 لكل عنصر ناجح؛ ولا تُحسب إخفاقات التحقق.