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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>split()‎</code> Kotlin/CharSequenc...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>text.split()‎</code> في لغة Kotlin}}</noinclude>
تعيد  الدالة <code>split()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر.  
يختلف سلوك الدالة <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|البنيةالعامة]]). 
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
fun CharSequence.slice(indices: IntRange): CharSequence
fun CharSequence.split(
    regex: Pattern,
    limit: Int = 0
): List<String>
Platform and version requirements: JVM


</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
): 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(
    vararg delimiters: String,
    ignoreCase: Boolean = false,
    limit: Int = 0
): 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>يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة).


</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر  [[Kotlin/String|سلسلة نصية]] مع تمرير مجال  <code>indices</code> من النوع <code>IntRange</code> كوسيط فستعيد [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.<syntaxhighlight lang="kotlin">
لتجنب الالتباس عندما تحتوي السلاسل النصية الموجودة في الوسيط المُمرّر <code>delimiters</code> حروفا مشتركة، فإنّ الدالة <code>findAnyOf()</code>‎ تبدأ من بداية تلك السلسلة النصية نحو نهايتها، وتبحث عند كل موضع عن العنصر الأول في <code>delimiters</code>والذي يطابق أحد العناصر الموجودة في <code>delimiters</code>عند ذلك الموضع.<syntaxhighlight lang="kotlin">
fun CharSequence.slice(indices: Iterable<Int>): CharSequence
fun CharSequence.split(
 
    vararg delimiters: Char,
</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير مجال  <code>indices</code> من النوع <code>Iterable<Int>‎</code> كوسيط فستعيد  [[Kotlin/CharSequence/index|سلسلة حروف]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى <code>IntRange</code>.<nowiki/><syntaxhighlight lang="kotlin">
    ignoreCase: Boolean = false,
inline fun CharSequence.replace(
    limit: Int = 0
    regex: Regex,
): List<String>
    noinline transform: (MatchResult) -> CharSequence
</syntaxhighlight>في حال استدعاء  الدالة <code>split()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير سلسلة الحروف  <code>delimiters</code> فستعيد لائحة مكونة من [[Kotlin/String|السلاسل النصية]] الموجودة حول المُحدِّدات المُتضمّنة في <code>delimiters.</code> الوسيط <code>limit</code> يحدد الحد الأقصى لعدد [[Kotlin/String|السلاسل النصية]] في اللائحة المُعادة. والوسيط <code>ignoreCase </code>يحدد ما إذا كانت الدالة ستتجاهل حالة الأحرف (أي لا تفرق بين الحروف الصغيرة والكبيرة).  
): 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)]].
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].


==القيم المعادة==
==القيم المعادة==
[[Kotlin/String|سلسلة نصية]] أو [[Kotlin/CharSequence/index|سلسلة حروف]].  
لائحة مكونة [[Kotlin/String|سلاسل نصية]].  
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()split</code> مع سلسلة نصية===
===استخدام الدالة <code>()split</code> مع سلسلة نصية===
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()split</code> عبرها مع تمرير مجال كوسيط، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()split</code> عبرها مع تمرير [[Kotlin/String|سلسلة نصية]]<nowiki/>كوسيط، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
val str = "wiki.hsoub.com"
   
println(str.split(".")) // [wiki, hsoub, com]
}
</syntaxhighlight>
===استخدام الدالة <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 str = "Hsoub wiki"
val str2 = "aa132bfd4xyz"


     println(str.slice(0..4)) // Hsoub
val reg = Regex("""-?\d+(\.\d+)?""") // يطابق هذا التعبير النمطي التعابير العددية، مثل: 45
      
println(str2.split(reg)) // [aa, bfd, xyz]
}
}
</syntaxhighlight>
</syntaxhighlight>
سطر 35: سطر 56:


* <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/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|asSequence()]]‎</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.
* <code>[[Kotlin/kotlin.text/asSequence|slice()]]‎</code>: تعيد  الدالة <code>slice()‎</code> [[Kotlin/CharSequence/index|سلسلة حروف]] أو [[Kotlin/String|سلسلة نصية]] جديدة تحتوي الحروف التي تنتمي فهارسها إلى الوسيط المُمرر. 


==مصادر==
==مصادر==
*[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 الدالة text.split()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 12:00، 12 يوليو 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).

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

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

أمثلة

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

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

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

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

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

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

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

انظر أيضًا

مصادر