Avatar ·

كيفية التعامل بشكل صحيح مع النص الفرعي (substring) في Swift؟ مشاكل مع String.Index و Range

مرحباً بالجميع! لقد بدأت مؤخراً في تعلم Swift، وواجهت مشكلة في الحصول على سلسلة فرعية من سلسلة نصية. في لغات أخرى، مثل Python أو JavaScript، يتم ذلك ببساطة: `"Hello"[0:4]` أو `"Hello".substring(0, 4)`. لكن في Swift صادفت أشياء غريبة — `String.Index`، `Range`، وطرق مثل `prefix()`، `suffix()`، `dropFirst()`. هذا مثال لا يعمل لدي: ```swift let text = "Привет, мир!" let substring = text[0...5] // خطأ: 'subscript(_:)' is unavailable ``` حاولت أن أفعل كما اعتدت، لكن المترجم يشتكي. ثم علمت أنه في Swift لا يمكنك ببساطة استخدام أعداد صحيحة لفهارس السلاسل النصية، لأن الرموز قد تكون بأطوال مختلفة (مثل الإيموجي). ولكن كيف إذن يمكن الحصول على أول 5 رموز أو نطاق من الرمز 3 إلى 7؟ جربت هذا الكود: ```swift let startIndex = text.index(text.startIndex, offsetBy: 0) let endIndex = text.index(text.startIndex, offsetBy: 5) let range = startIndex..