الفرق بين المراجعتين لصفحة: «Kotlin/kotlin.text/split»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>split()‎</code> Kotlin/CharSequenc...'
 
مراجعة وتدقيق.
 
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>split()‎</code> في Kotlin}}</noinclude>
تعيد  الدالة <code>split()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر.  
<nowiki/><nowiki/>تقتطع الدالة <code>split()‎</code> المحارف الموجودة بين الأجزاء المتطابقة مع <nowiki/>[[Kotlin/kotlin.text/Regex|تعبير نمطي]] معين أو بين سلاسل نصية أو محارف معينة في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممررة إليها وتعيدها في قائمة.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
fun CharSequence.slice(indices: IntRange): CharSequence
fun CharSequence.split(
    regex: Pattern,
    limit: Int = 0
): List<String>


</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير مجال  <code>indices</code> من النوع <code>IntRange</code> كوسيط فستعيد  [[Kotlin/CharSequence/index|سلسلة حروف]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.<syntaxhighlight lang="kotlin">
inline fun CharSequence.split(
fun String.slice(indices: IntRange): String
    regex: Regex,
 
    limit: Int = 0
</syntaxhighlight>في حال استدعاء  الدالة <code>split()</code> عبر  [[Kotlin/String|سلسلة نصية]] مع تمرير مجال  <code>indices</code> من النوع <code>IntRange</code> كوسيط فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.<syntaxhighlight lang="kotlin">
): List<String>
fun CharSequence.slice(indices: Iterable<Int>): CharSequence


</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير مجال  <code>indices</code> من النوع <code>Iterable<Int>‎</code> كوسيط فستعيد  [[Kotlin/CharSequence/index|سلسلة حروف]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.<nowiki/><syntaxhighlight lang="kotlin">
fun CharSequence.split(
inline fun CharSequence.replace(
     vararg delimiters: String,  
     regex: Regex,  
     ignoreCase: Boolean = false,
     noinline transform: (MatchResult) -> CharSequence
    limit: Int = 0
): String
): List<String>
</syntaxhighlight>في حال استدعاء  الدالة <code>split()</code> عبر  [[Kotlin/String|سلسلة نصية]] مع تمرير مجال  <code>indices</code> من النوع <code>Iterable<Int>‎</code> كوسيط فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.


يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
fun CharSequence.split(
    vararg delimiters: Char,
    ignoreCase: Boolean = false,
    limit: Int = 0
): List<String>
</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>split()</code>‎ تبدأ من بداية سلسلة المحارف المعطاة وحتى نهايتها باحثةً عن العنصر الأول في <code>strings</code> ثم الثاني ثم الثالث ...إلخ. عند كل محرف من محارفها لمطابقة ذلك العنصر في سلسلة المحارف المعطاة .
===<code>ignoreCase</code>===
قيمة منطقية تحدد إن كان يراد تجاهل حالة الأحرف أثناء إجراء عملية الموازنة أم لا. القيمة الافتراضية هي: <code>false</code> (أي أخذ حالة الأحرف بالحسبان).
==القيم المعادة==
==القيم المعادة==
[[Kotlin/String|سلسلة نصية]] أو [[Kotlin/CharSequence/index|سلسلة حروف]].  
تعاد قائمة من [[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> عبرها مع تمرير مجال كوسيط، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
     val str = "Hsoub wiki"
     val str = "wiki.hsoub.com"
    println(str.split(".")) // [wiki, hsoub, com]
}
</syntaxhighlight>مثالٌ آخر على استعمال الدالة <code>()split</code> مع [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]]:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
    val str2 = "aa132bfd4xyz"
    // يطابق التعبير النمطي التالي القيم العددية
    val reg = Regex("""-?\d+(\.\d+)?""")


     println(str.slice(0..4)) // Hsoub
     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|asSequence()]]‎</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.
 
==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/slice.html الدالة text.split()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html صفحة الدالة split()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف: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]
}

انظر أيضًا

مصادر