الفرق بين المراجعتين ل"Kotlin/kotlin.text/split"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'Kotlin Functions' ب'Kotlin Function')
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
يختلف سلوك الدالة <code>split()‎</code> بحسب أنواع الوسائط المُمررة (انظر فقرة [[Kotlin/kotlin.text/split#.D8.A7.D9.84.D8.A8.D9.86.D9.8A.D8.A9 .D8.A7.D9.84.D8.B9.D8.A7.D9.85.D8.A9|البنيةالعامة]]). 
+
تقتطع الدالة <code>split()‎</code> المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها.  
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
سطر 30: سطر 30:
  
 
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 +
 +
== المعاملات ==
 +
 +
=== <code>regex</code> ===
 +
التعبير النمطي الذي يراد أن يطابق سلسلة المحارف المعطاة.
 +
 +
=== <code>limit</code> ===
 +
عدد صحيح موجب يحدد الحد الأقصى لعدد الأجزاء المقتطعة المراد جلبها. قيمته الافتراضية هي: 0 أي لا يوجد حد أقصى.
 +
 +
=== <code>delimiters</code> ===
 +
السلاسل النصية التي تمثل
 +
 +
=== <code>ignoreCase</code> ===
 +
قيمة منطقية تحدد إن كان يراد تجاهل حالة الأحرف أثناء إجراء عملية الموازنة أم لا. القيمة الافتراضية هي: false (أي أخذ حالة الأحرف بالحسبان).
  
 
==القيم المعادة==
 
==القيم المعادة==
 
لائحة مكونة [[Kotlin/String|سلاسل نصية]].  
 
لائحة مكونة [[Kotlin/String|سلاسل نصية]].  
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()split</code> مع سلسلة نصية===
+
مثالٌ على استعمال الدالة  <code>()split</code> مع [[Kotlin/String|سلسلة نصية]]<nowiki/><nowiki/>:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()split</code> عبرها مع تمرير [[Kotlin/String|سلسلة نصية]]<nowiki/>كوسيط، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
val str = "wiki.hsoub.com"
 
val str = "wiki.hsoub.com"
سطر 42: سطر 55:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
===استخدام الدالة <code>()split</code> مع سلسلة نصية مع تمرير تعبير منطقي===
+
مثالٌ على استعمال الدالة <code>()split</code> مع [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]]:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()split</code> عبرها مع تمرير [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]] كوسيط، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
val str2 = "aa132bfd4xyz"
 
val str2 = "aa132bfd4xyz"

مراجعة 11:57، 5 سبتمبر 2018

تقتطع الدالة split()‎ المحارف الموجودة بين الأجزاء المتطابقة مع تعبير نمطي معين أو بين سلاسل نصية أو محارف معينة في سلسلة المحارف الممررة إليها.

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

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>

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

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

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

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

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

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

المعاملات

regex

التعبير النمطي الذي يراد أن يطابق سلسلة المحارف المعطاة.

limit

عدد صحيح موجب يحدد الحد الأقصى لعدد الأجزاء المقتطعة المراد جلبها. قيمته الافتراضية هي: 0 أي لا يوجد حد أقصى.

delimiters

السلاسل النصية التي تمثل

ignoreCase

قيمة منطقية تحدد إن كان يراد تجاهل حالة الأحرف أثناء إجراء عملية الموازنة أم لا. القيمة الافتراضية هي: false (أي أخذ حالة الأحرف بالحسبان).

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

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

أمثلة

مثالٌ على استعمال الدالة ()split مع سلسلة نصية:

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

مثالٌ على استعمال الدالة ()split مع تعبير نمطي:

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

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

انظر أيضًا

مصادر