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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.replaceRange()‎</code> في لغة Kotlin}}</noinclude> يختلف سلوك الدالة <code>replaceRange()‎</co...'
 
مراجعة وتدقيق.
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.replaceRange()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>replaceRange()‎</code> في Kotlin}}</noinclude>
يختلف سلوك الدالة <code>replaceRange()‎</code> بحسب أنواع الوسائط المُمررة (انظر فقرة [[Kotlin/kotlin.text/replace#.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>replaceRange()‎</code> سلسلة معينة من المحارف مكان جزء محدد في سلسلة من المحارف أو سلسلة نصية.  
 
سيُرمَى الاستثناء <code>IndexOutOfBoundsException</code> إن وقع مجال الجزء المحدد المراد استبداله خارج مجال سلسلة المحارف أو السلسلة النصية المعطاة.  
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
actual fun String.replace(
fun CharSequence.replaceRange(
     oldChar: Char,  
    startIndex: Int,
     newChar: Char,  
    endIndex: Int,
     ignoreCase: Boolean = false
    replacement: CharSequence
): CharSequence
 
inline fun String.replaceRange(
     startIndex: Int,  
     endIndex: Int,  
     replacement: CharSequence
): String
): String
</syntaxhighlight>في حال استدعاء  الدالة <code>replaceRange()‎</code> عبر [[Kotlin/String|سلسلة نصية]] مع تمرير حرفين<code>oldChar</code> و <code>newChar</code> كوسيطين فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة مع تعويض الحرف <code>oldChar</code> بالحرف <code>newChar</code>.<syntaxhighlight lang="kotlin">
 
actual fun String.replace(
fun CharSequence.replaceRange(
     oldValue: String,  
     range: IntRange,  
     newValue: String,  
     replacement: CharSequence
     ignoreCase: Boolean = false
): CharSequence
 
inline fun String.replaceRange(
    range: IntRange,  
     replacement: CharSequence
): String
): String
</syntaxhighlight>في حال استدعاء  الدالة <code>replaceRange()‎</code> عبر [[Kotlin/String|سلسلة نصية]] مع تمرير [[Kotlin/String|سلسلتين نصيتين]] <code>oldValue</code> و <code>newValue</code> كوسيطين فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة مع تعويض <code>oldValue</code> بـ <code>newValue</code>.<syntaxhighlight lang="kotlin">
</syntaxhighlight><nowiki/>وجود الكلمة المفتاحية <code>inline</code> يدل على أن هذه الدالة مباشرة (لمزيد من التفاصيل، ارجع إلى صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
inline fun CharSequence.replace(
 
    regex: Regex,
== المعاملات ==
    replacement: String
 
): String
=== <code>startIndex</code> ===
</syntaxhighlight>في حال استدعاء  الدالة <code>replaceRange()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]] <code>regex</code> و<nowiki/>[[Kotlin/String|سلسلة نصية]]  <code>replacement</code> كوسيطين فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة مع تعويض كل المُطابقات  [[Kotlin/kotlin.text/Regex/index|للتعبير النمطي]] <code>regex</code> [[Kotlin/String|بالسلسلة النصية]]  <code>replacement</code>.<syntaxhighlight lang="kotlin">
عدد صحيح يشير إلى فهرس المحرف الذي يمثل بداية الجزء المراد استبداله.
inline fun CharSequence.replace(
 
    regex: Regex,
=== <code>endIndex</code> ===
    noinline transform: (MatchResult) -> CharSequence
عدد صحيح يشير إلى فهرس المحرف الذي يمثل نهاية الجزء المراد استبداله (لا يدخل هذا المحرف ضمن المجال المُستبدَل).
): String
 
</syntaxhighlight>في حال استدعاء  الدالة <code>replaceRange()‎</code> عبر [[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير [[Kotlin/kotlin.text/Regex/index|تعبير نمطي]] <code>regex</code> ودالة  <code>transform</code> كوسيطين فستعيد  [[Kotlin/String|سلسلة نصية]] جديدة مع تعويض كل المُطابقات  [[Kotlin/kotlin.text/Regex/index|للتعبير النمطي]] <code>regex</code> بناتج تطبيق الدالة <code>transform</code> والتي تأخذ كائنا من النوع <code>[[Kotlin/kotlin.text/MatchResult/index|MatchResult]]</code> وتعيد  [[Kotlin/String|سلسلة نصية]] لاستخدامها في عملية التعويض.
=== <code>range</code> ===
مجال من النوع <code>[[Kotlin/ranges/IntRange|IntRange]]</code> يحدد مجال الجزء المراد استبداله.
 
=== <code>replacement</code> ===
السلسلة النصية التي ستحل مكان الجزء المحدد بالعنصر ذي الفهرس <code>startIndex</code> والعنصر ذي الفهرس <code>endIndex</code>، أو المحدد بالمجال <code>range</code>.


==القيم المعادة==
==القيم المعادة==
[[Kotlin/String|سلسلة نصية]].  
تعاد [[Kotlin/CharSequence/index|سلسلة من المحارف]] أو [[Kotlin/String|سلسلة نصية]] تحوي جميع محارف سلسلة المحارف أو السلسلة النصية المعطاة بعد تبديل قيمة المعامل <code>replacement</code> مكان الجزء المحدد بالعنصر ذي الفهرس <code>startIndex</code> والعنصر ذي الفهرس  <code>endIndex</code>، أو المحدد بالمجال <code>range</code>.  
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()replaceRange</code> مع سلسلة نصية===
مثالٌ على استعمال الدالة <code>()replaceRange</code><nowiki/><nowiki/>:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()replaceRange</code> عبرها مع تجريب عدة أنواع من الوسائط، <nowiki/>ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val str = "abc12rad234com"  
    val str = "Hsoub wiki"
      
 
println( str.replace ('a','X') ) // Xbc12rXd234com
     println( str.replaceRange(6, 10, "academy")) // Hsoub academy
println( str.replace ("rad","X") ) // abc12X234com
    println( str.replaceRange(6..9, "academy"))               // Hsoub academy
println( str.replace (Regex("""-?\d+(\.\d+)?"""), "X") ) // abcXradXcom
println( str.replace (Regex("""-?\d+(\.\d+)?""")) {it.value} ) // abc12rad234com
}
}
</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/replace|replace()]]</code>: تبدل محرفًا جديدًا مكان محرف قديم، أو سلسلة نصية جديدة مكان سلسلة نصية قديمة، أو سلسلة نصية جديدة أو ناتج تنفيذ دالة مكان كل ما يطابق تعبير نمطي معين في سلسلة نصية أو سلسلة من المحارف.
 
*الدالة <code>[[Kotlin/kotlin.text/replace|replace()]]</code>: تبدل محرفًا جديدًا مكان محرف قديم، أو سلسلة نصية جديدة مكان سلسلة نصية قديمة، أو سلسلة نصية جديدة أو ناتج تنفيذ دالة مكان كل ما يطابق تعبير نمطي معين في سلسلة نصية أو سلسلة من المحارف.
* <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/replaceAfter|replaceAfter()‎]]</code>: تبدل<nowiki/>[[Kotlin/String|سلسلة نصية]] مكان كل الجزء الواقع بعد أول ظهور [[Kotlin/Char|لمحرف]] أو [[Kotlin/String|لسلسلة نصية]] معينة في [[Kotlin/String|سلسلة نصية]] . 
* <code>[[Kotlin/kotlin.text/asSequence|asSequence()]]</code>: تنشئ كائنًا من الصنف <code>Sequence</code> والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.
*الدالة <code>[[Kotlin/kotlin.text/replaceAfterLast|replaceAfterLast()‎]]</code>: تبدل<nowiki/>[[Kotlin/String|سلسلة نصية]] مكان كل الجزء الواقع بعد آخر ظهور [[Kotlin/Char|لمحرف]] أو [[Kotlin/String|لسلسلة نصية]] معينة في [[Kotlin/String|سلسلة نصية]] .  
 
*الدالة <code>[[Kotlin/kotlin.text/replaceBefore|replaceBefore()]]</code>: تبدل [[Kotlin/String|سلسلة نصية]] مكان كل الجزء الواقع قبل أول ظهور [[Kotlin/Char|لمحرف]] أو [[Kotlin/String|لسلسلة نصية]] معينة في [[Kotlin/String|سلسلة نصية]].  
*الدالة <code>[[Kotlin/kotlin.text/replaceBeforeLast|replaceBeforeLast()‎]]</code>: تبدل [[Kotlin/String|سلسلة نصية]] مكان كل الجزء الواقع قبل آخر ظهور [[Kotlin/Char|لمحرف]] أو [[Kotlin/String|لسلسلة نصية]] معينة في [[Kotlin/String|سلسلة نصية]]. 
*الدالة <code>[[Kotlin/kotlin.text/replaceIndent|replaceIndent()‎]]</code>: تبدِّل [[Kotlin/String|سلسلة نصية]] معينة مكان المسافة البادئة الفارغة (indentation) في [[Kotlin/String|السلسلة النصية]] التي استُدعيت معها.   
*الدالة <code>[[Kotlin/kotlin.text/replaceIndentByMargin|replaceIndentByMargin()‎]]</code>  تبدل [[Kotlin/String|سلسلة نصية]] معينة مكان المسافة البادئة المحددة عبر المعامل الممرر إليها في [[Kotlin/String|السلسلة النصية]] التي استُدعيت معها.  
*الدالة <code>[[Kotlin/kotlin.text/Regex/find|find()]]</code>: تبحث عن أول محرف متطابق مع <nowiki/>[[Kotlin/kotlin.text/Regex/index|التعبير النمطي]] الذي استُدعي معها في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] الممرَّرة إليها. يمكن البحث في <nowiki/>[[Kotlin/CharSequence|سلسلة المحارف]] المعطاة بأكملها، أو يمكن بدء عملية البحث عند محرف معين.
==مصادر==
==مصادر==
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace.html الدالة text.replaceRange()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-range.html صفحة الدالة replaceRange()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Text]]

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

تبدِّل الدالة replaceRange()‎ سلسلة معينة من المحارف مكان جزء محدد في سلسلة من المحارف أو سلسلة نصية.

سيُرمَى الاستثناء IndexOutOfBoundsException إن وقع مجال الجزء المحدد المراد استبداله خارج مجال سلسلة المحارف أو السلسلة النصية المعطاة.

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

fun CharSequence.replaceRange(
    startIndex: Int, 
    endIndex: Int, 
    replacement: CharSequence
): CharSequence

inline fun String.replaceRange(
    startIndex: Int, 
    endIndex: Int, 
    replacement: CharSequence
): String

fun CharSequence.replaceRange(
    range: IntRange, 
    replacement: CharSequence
): CharSequence 

inline fun String.replaceRange(
    range: IntRange, 
    replacement: CharSequence
): String

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

المعاملات

startIndex

عدد صحيح يشير إلى فهرس المحرف الذي يمثل بداية الجزء المراد استبداله.

endIndex

عدد صحيح يشير إلى فهرس المحرف الذي يمثل نهاية الجزء المراد استبداله (لا يدخل هذا المحرف ضمن المجال المُستبدَل).

range

مجال من النوع IntRange يحدد مجال الجزء المراد استبداله.

replacement

السلسلة النصية التي ستحل مكان الجزء المحدد بالعنصر ذي الفهرس startIndex والعنصر ذي الفهرس endIndex، أو المحدد بالمجال range.

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

تعاد سلسلة من المحارف أو سلسلة نصية تحوي جميع محارف سلسلة المحارف أو السلسلة النصية المعطاة بعد تبديل قيمة المعامل replacement مكان الجزء المحدد بالعنصر ذي الفهرس startIndex والعنصر ذي الفهرس endIndex، أو المحدد بالمجال range.

أمثلة

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

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

    println( str.replaceRange(6, 10, "academy")) // Hsoub academy
    println( str.replaceRange(6..9, "academy"))               // Hsoub academy
}

انظر أيضًا

مصادر