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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'Kotlin Functions' ب'Kotlin Function')
(مراجعة وتدقيق.)
 
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>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|البنيةالعامة]]). 
+
<nowiki/><nowiki/>تقتطع الدالة <code>split()‎</code> المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها وتعيدها في قائمة.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
سطر 7: سطر 7:
 
     limit: Int = 0
 
     limit: Int = 0
 
): List<String>
 
): List<String>
Platform and version requirements: JVM
 
  
 
inline fun CharSequence.split(
 
inline fun CharSequence.split(
سطر 13: سطر 12:
 
     limit: Int = 0
 
     limit: Int = 0
 
): List<String>
 
): List<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]] <code>regex</code> كوسيط فستعيد لائحة مكونة من  [[Kotlin/String|السلاسل النصية]] الموجودة حول مُطابقات  [[Kotlin/kotlin.text/Regex/index|التعبير النمطي]] <code>regex.</code> الوسيط <code>limit</code> يحدد الحد الأقصى لعدد  [[Kotlin/String|السلاسل النصية]] في اللائحة المُعادة.<syntaxhighlight lang="kotlin">
+
 
 
fun CharSequence.split(
 
fun CharSequence.split(
 
     vararg delimiters: String,  
 
     vararg delimiters: String,  
سطر 19: سطر 18:
 
     limit: Int = 0
 
     limit: Int = 0
 
): List<String>
 
): List<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير [[Kotlin/String|سلسلة نصية]] <code>delimiters</code> كوسيط فستعيد لائحة مكونة من  [[Kotlin/String|السلاسل النصية]] الموجودة حول المُحدِّدات المُتضمّنة في <code>delimiters.</code> الوسيط <code>limit</code> يحدد الحد الأقصى لعدد  [[Kotlin/String|السلاسل النصية]] في اللائحة المُعادة. والوسيط <code>ignoreCase </code>يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة).
 
  
لتجنب الالتباس عندما تحتوي السلاسل النصية الموجودة في الوسيط المُمرّر <code>delimiters</code> حروفا مشتركة، فإنّ الدالة <code>findAnyOf()</code>‎ تبدأ من بداية تلك السلسلة النصية نحو نهايتها، وتبحث عند كل موضع عن العنصر الأول في <code>delimiters</code>والذي يطابق أحد العناصر  الموجودة في <code>delimiters</code>عند ذلك الموضع.<syntaxhighlight lang="kotlin">
 
 
fun CharSequence.split(
 
fun CharSequence.split(
 
     vararg delimiters: Char,  
 
     vararg delimiters: Char,  
سطر 27: سطر 24:
 
     limit: Int = 0
 
     limit: Int = 0
 
): List<String>
 
): List<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير سلسلة الحروف  <code>delimiters</code> فستعيد لائحة مكونة من  [[Kotlin/String|السلاسل النصية]] الموجودة حول المُحدِّدات المُتضمّنة في <code>delimiters.</code> الوسيط <code>limit</code> يحدد الحد الأقصى لعدد [[Kotlin/String|السلاسل النصية]] في اللائحة المُعادة. والوسيط <code>ignoreCase </code>يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة).  
+
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أن هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة <nowiki/>[[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
 
+
==المعاملات==
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
===<code>regex</code>===
 +
النمط أو [[Kotlin/kotlin.text/Regex|التعبير النمطي]] الذي يراد أن يطابق سلسلة المحارف المعطاة.
 +
===<code>limit</code>===
 +
عدد صحيح موجب يحدد الحد الأقصى لعدد الأجزاء المقتطعة المراد جلبها. قيمته الافتراضية هي: 0 أي لا يوجد حد أقصى.
 +
===<code>delimiters</code>===
 +
سلسلة نصية واحدة أو أكثر أو محرف واحد أو أكثر تمثل الفواصل بين الأجزاء الواقعة بينها التي يراد جلبها.
  
 +
لتجنب الالتباس الناتج عند وجود محارف مشتركة بين السلاسل النصية الموجودة في المعامل <code>delimiters</code>، فإنّ الدالة <code>split()</code>‎ تبدأ من بداية سلسلة المحارف المعطاة وحتى نهايتها باحثةً عن العنصر الأول في <code>strings</code> ثم الثاني ثم الثالث ...إلخ. عند كل محرف من محارفها لمطابقة ذلك العنصر في سلسلة المحارف المعطاة .
 +
===<code>ignoreCase</code>===
 +
قيمة منطقية تحدد إن كان يراد تجاهل حالة الأحرف أثناء إجراء عملية الموازنة أم لا. القيمة الافتراضية هي: <code>false</code> (أي أخذ حالة الأحرف بالحسبان).
 
==القيم المعادة==
 
==القيم المعادة==
لائحة مكونة [[Kotlin/String|سلاسل نصية]].  
+
تعاد قائمة من [[Kotlin/String|سلاسل نصية]] تحوي الأجزاء المقتطعة من السلسلة النصية المعطاة والواقعة بين الأجزاء المتطابقة مع التعبير النمطي <code>regex</code> أو الموجودة بين الفواصل <code>delimiters</code>.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()split</code> مع سلسلة نصية===
+
مثالٌ على استعمال الدالة  <code>()split</code> مع [[Kotlin/String|سلسلة نصية]]:<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"
      
+
     println(str.split(".")) // [wiki, hsoub, com]
println(str.split(".")) // [wiki, hsoub, com]
 
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>مثالٌ آخر على استعمال الدالة <code>()split</code> مع [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]]:<syntaxhighlight lang="kotlin">
===استخدام الدالة <code>()split</code> مع سلسلة نصية مع تمرير تعبير منطقي===
 
تعرِّف الشيفرة الآتية  [[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"
 +
    // يطابق التعبير النمطي التالي القيم العددية
 +
    val reg = Regex("""-?\d+(\.\d+)?""")
  
val reg = Regex("""-?\d+(\.\d+)?""") // يطابق هذا التعبير النمطي التعابير العددية، مثل: 45
+
     println(str2.split(reg)) // [aa, bfd, xyz]
      
 
println(str2.split(reg)) // [aa, bfd, xyz]
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
* <code>[[Kotlin/kotlin.text/replaceAfter|replaceAfter()]]</code>: تعيد الدالة <code>replaceAfter()‎</code> [[Kotlin/String|سلسلة نصية]] جديدة تساوي [[Kotlin/String|السلسلة النصية]] التي استُدعيت عبرها مع تعويض الجزء الذي يظهر بعد الوسيط المُمرّر <code>delimiter</code> [[Kotlin/String|بالسلسلة النصية]] <code>replacement</code>. إن لم لم تحتو  [[Kotlin/String|السلسلة النصية]] على <code>delimiter</code> فستعيد <code>missingDelimiterValue</code> والذي يساوي افتراضيا [[Kotlin/String|السلسلة النصية]] الأصلية. 
+
* الدالة <code>[[Kotlin/kotlin.text/Regex/split|split()]]</code>: تقتطع المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|التعبير النمطي]] الذي استُدعي معها في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها.
 
+
*الدالة <code>[[Kotlin/kotlin.text/splitToSequence|splitToSequence()]]</code>: تقتطع المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها وتعيدها في سلسلة. 
* <code>[[Kotlin/kotlin.text/removeSuffix|removeSuffix()]]</code>: إن كانت [[Kotlin/String|السلسلة النصية]] أو [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استٌدعيت عبرها الدالة <code>removeSuffix()‎</code> تنتهي باللاحقة <code>suffix</code> فستعيد [[Kotlin/String|سلسلة نصية]] أو [[Kotlin/CharSequence/index|سلسلة حروف]] جديدة مع حذف تلك اللاحقة، وإلا فستعيد [[Kotlin/String|السلسلة النصية]] أو [[Kotlin/CharSequence/index|سلسلة الحروف]] كما هي
+
*الدالة <code>[[Kotlin/kotlin.text/slice|slice()]]</code>: تقطتع جزءًا محدَّدًا من <nowiki/>[[Kotlin/CharSequence/index|سلسلة المحارف]] أو [[Kotlin/String|السلسلة النصية]]  التي استُدعيت معها ثمَّ تعيده
* <code>[[Kotlin/kotlin.text/asSequence|slice()]]</code>: تعيد  الدالة <code>slice()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر
 
 
 
 
==مصادر==
 
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html الدالة text.split()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html صفحة الدالة split()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Function]]
 
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Text]]

المراجعة الحالية بتاريخ 13:48، 5 سبتمبر 2018

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

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

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

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

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

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

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

المعاملات

regex

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

limit

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

delimiters

سلسلة نصية واحدة أو أكثر أو محرف واحد أو أكثر تمثل الفواصل بين الأجزاء الواقعة بينها التي يراد جلبها.

لتجنب الالتباس الناتج عند وجود محارف مشتركة بين السلاسل النصية الموجودة في المعامل delimiters، فإنّ الدالة split()‎ تبدأ من بداية سلسلة المحارف المعطاة وحتى نهايتها باحثةً عن العنصر الأول في strings ثم الثاني ثم الثالث ...إلخ. عند كل محرف من محارفها لمطابقة ذلك العنصر في سلسلة المحارف المعطاة .

ignoreCase

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

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

تعاد قائمة من سلاسل نصية تحوي الأجزاء المقتطعة من السلسلة النصية المعطاة والواقعة بين الأجزاء المتطابقة مع التعبير النمطي regex أو الموجودة بين الفواصل delimiters.

أمثلة

مثالٌ على استعمال الدالة ()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+)?""")

    println(str2.split(reg)) // [aa, bfd, xyz]
}

انظر أيضًا

مصادر