الدالة text.splitToSequence()‎ في لغة Kotlin

من موسوعة حسوب
مراجعة 12:01، 12 يوليو 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.splitToSequence()‎</code> في لغة Kotlin}}</noinclude> يختلف سلوك الدالة <code>splitToSequence()...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يختلف سلوك الدالة splitToSequence()‎ بحسب أنواع الوسائط المُمررة (انظر فقرة البنيةالعامة). 

البنية العامة

fun CharSequence.split(
    regex: Pattern, 
    limit: Int = 0
): List<String>
Platform and version requirements: JVM

inline fun CharSequence.split(
    regex: Regex, 
    limit: Int = 0
): List<String>

في حال استدعاء الدالة splitToSequence()‎ عبر سلسلة حروف مع تمرير تعبير نمطي regex كوسيط فستعيد لائحة مكونة من السلاسل النصية الموجودة حول مُطابقات التعبير النمطي regex. الوسيط limit يحدد الحد الأقصى لعدد السلاسل النصية في اللائحة المُعادة.

fun CharSequence.split(
    vararg delimiters: String, 
    ignoreCase: Boolean = false, 
    limit: Int = 0
): List<String>

في حال استدعاء الدالة splitToSequence()‎ عبر سلسلة حروف مع تمرير سلسلة نصية delimiters كوسيط فستعيد لائحة مكونة من السلاسل النصية الموجودة حول المُحدِّدات المُتضمّنة في delimiters. الوسيط limit يحدد الحد الأقصى لعدد السلاسل النصية في اللائحة المُعادة. والوسيط ignoreCase يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة). لتجنب الالتباس عندما تحتوي السلاسل النصية الموجودة في الوسيط المُمرّر delimiters حروفا مشتركة، فإنّ الدالة findAnyOf()‎ تبدأ من بداية تلك السلسلة النصية نحو نهايتها، وتبحث عند كل موضع عن العنصر الأول في delimitersوالذي يطابق أحد العناصر الموجودة في delimitersعند ذلك الموضع.

fun CharSequence.split(
    vararg delimiters: Char, 
    ignoreCase: Boolean = false, 
    limit: Int = 0
): List<String>

في حال استدعاء الدالة splitToSequence()‎ عبر سلسلة حروف مع تمرير سلسلة الحروف  delimiters فستعيد لائحة مكونة من السلاسل النصية الموجودة حول المُحدِّدات المُتضمّنة في delimiters. الوسيط limit يحدد الحد الأقصى لعدد السلاسل النصية في اللائحة المُعادة. والوسيط ignoreCase يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة).

يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions).

القيم المعادة

لائحة مكونة سلاسل نصية.

أمثلة

استخدام الدالة ()split مع سلسلة نصية

تعرِّف الشيفرة الآتية سلسلة نصية باسم str، ثمَّ تستدعي الدالة ()split عبرها مع تمرير سلسلة نصيةكوسيط، ثمَّ تطبع الناتج:

fun main(args: Array<String>) {
val str = "wiki.hsoub.com"
    
println(str.split(".")) // [wiki, hsoub, com]
}

استخدام الدالة ()splitToSequence مع سلسلة نصية مع تمرير تعبير منطقي

تعرِّف الشيفرة الآتية سلسلة نصية باسم str، ثمَّ تستدعي الدالة ()splitToSequence عبرها مع تمرير تعبير نمطي كوسيط، ثمَّ تطبع الناتج:

fun main(args: Array<String>) {
val str2 = "aa132bfd4xyz"

val reg = Regex("""-?\d+(\.\d+)?""") // يطابق هذا التعبير النمطي التعابير العددية، مثل: 45
    
println(str2.split(reg)) // [aa, bfd, xyz]
}

انظر أيضًا

مصادر