كيفية التعامل بشكل صحيح مع النص الفرعي (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..