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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.splitToSequence()‎</code> في لغة Kotlin}}</noinclude> يختلف سلوك الدالة <code>splitToSequence()...')
 
(مراجعة وتدقيق.)
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.splitToSequence()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>splitToSequence()‎</code> في Kotlin}}</noinclude>
يختلف سلوك الدالة <code>splitToSequence()‎</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>splitToSequence()‎</code> المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها وتعيدها في سلسلة
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
fun CharSequence.split(
+
fun CharSequence.splitToSequence(
    regex: Pattern,
 
    limit: Int = 0
 
): List<String>
 
Platform and version requirements: JVM
 
 
 
inline fun CharSequence.split(
 
    regex: Regex,
 
    limit: Int = 0
 
): List<String>
 
</syntaxhighlight>في حال استدعاء  الدالة <code>splitToSequence()‎</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(
 
 
     vararg delimiters: String,  
 
     vararg delimiters: String,  
 
     ignoreCase: Boolean = false,  
 
     ignoreCase: Boolean = false,  
 
     limit: Int = 0
 
     limit: Int = 0
): List<String>
+
): Sequence<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>splitToSequence()‎</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: سطر 14:
 
     limit: Int = 0
 
     limit: Int = 0
 
): List<String>
 
): List<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>splitToSequence()‎</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>regex</code>===
 +
النمط أو [[Kotlin/kotlin.text/Regex|التعبير النمطي]] الذي يراد أن يطابق سلسلة المحارف المعطاة.
 +
===<code>limit</code>===
 +
عدد صحيح موجب يحدد الحد الأقصى لعدد الأجزاء المقتطعة المراد جلبها. قيمته الافتراضية هي: 0 أي لا يوجد حد أقصى.
 +
===<code>delimiters</code>===
 +
سلسلة نصية واحدة أو أكثر أو محرف واحد أو أكثر تمثل الفواصل بين الأجزاء الواقعة بينها التي يراد جلبها.
  
 +
لتجنب الالتباس الناتج عند وجود محارف مشتركة بين السلاسل النصية الموجودة في المعامل <code>delimiters</code>، فإنّ الدالة <code>splitToSequence()</code>‎ تبدأ من بداية سلسلة المحارف المعطاة وحتى نهايتها باحثةً عن العنصر الأول في <code>strings</code> ثم الثاني ثم الثالث ...إلخ. عند كل محرف من محارفها لمطابقة ذلك العنصر في سلسلة المحارف المعطاة .
 +
===<code>ignoreCase</code>===
 +
قيمة منطقية تحدد إن كان يراد تجاهل حالة الأحرف أثناء إجراء عملية الموازنة أم لا. القيمة الافتراضية هي: <code>false</code> (أي أخذ حالة الأحرف بالحسبان).
 
==القيم المعادة==
 
==القيم المعادة==
لائحة مكونة [[Kotlin/String|سلاسل نصية]].  
+
تعاد [[Kotlin/sequences/Sequence|سلسلة]] من [[Kotlin/String|سلاسل نصية]] تحوي الأجزاء المقتطعة من السلسلة النصية المعطاة والواقعة بين الأجزاء المتطابقة مع التعبير النمطي <code>regex</code> أو الموجودة بين الفواصل <code>delimiters</code>. 
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()split</code> مع سلسلة نصية===
+
مثالٌ على استعمال الدالة <code>()splitToSequence</code>:<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]
 
}
 
</syntaxhighlight>
 
===استخدام الدالة <code>()splitToSequence</code> مع سلسلة نصية مع تمرير تعبير منطقي===
 
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()splitToSequence</code> عبرها مع تمرير [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]] كوسيط، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
 
fun main(args: Array<String>) {
 
val str2 = "aa132bfd4xyz"
 
  
val reg = Regex("""-?\d+(\.\d+)?""") // يطابق هذا التعبير النمطي التعابير العددية، مثل: 45
+
    println(str.splitToSequence(".").toList()) // [wiki, hsoub, com]
   
 
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/split|split()]]</code>: تقتطع المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها وتعيدها في قائمة
 
+
*الدالة <code>[[Kotlin/kotlin.text/slice|slice()]]</code>: تقطتع جزءًا محدَّدًا من <nowiki/>[[Kotlin/CharSequence/index|سلسلة المحارف]] أو [[Kotlin/String|السلسلة النصية]]  التي استُدعيت معها ثمَّ تعيده.
* <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/asSequence|slice()]]</code>: تعيد  الدالة <code>slice()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر. 
 
 
 
 
==مصادر==
 
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html الدالة text.splitToSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split-to-sequence.html صفحة الدالة splitToSequence()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Text]]

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

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

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

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

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

المعاملات

regex

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

limit

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

delimiters

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

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

ignoreCase

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

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

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

أمثلة

مثالٌ على استعمال الدالة ()splitToSequence:

fun main(args: Array<String>) {
    val str = "wiki.hsoub.com"

    println(str.splitToSequence(".").toList()) // [wiki, hsoub, com]
}

انظر أيضًا

مصادر