English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

النصوص لـ Scala

مثال أدناه يقوم بتعيين قيمة سلسلة نصية إلى متغير ثابت:

object Test {
   val greeting: String = "Hello, World!"
   def main(args: Array[String]) {
      println( greeting )
   }
}

مثال أعلاه يعرف المتغير greeting كمتغير ثابت، وهو قيمة نصية، ونوعه String (java.lang.String).

في Scala، نوع السلسلة هو Java String، ولم يكن لديه فئة String.

في Scala، String هو جسم غير قابل للتغيير، لذا لا يمكن تعديل هذا الجسم. مما يعني أنك إذا قمت بتعديل السلسلة، ستنتج سلسلة نصية جديدة.

لكن الأجسام الأخرى مثل الأنظمة المتغيرة. سنقدم لكم لاحقًا طرق java.lang.String الشائعة.

إنشاء سلسلة نصية

مثال على إنشاء سلسلة نصية كالتالي:

var greeting = "Hello World!";
أو
var greeting: String = "Hello World!";

ليس من الضروري تحديد نوع الكلمة كـ String، لأن معالج Scala سيقوم بتقدير نوع الكلمة كـ String تلقائيًا.

بالطبع، يمكنك أيضًا تعريف الكلمة مباشرة كنوع String، مثل المثال التالي:

object Test {
   val greeting: String = "Hello, World!"
   def main(args: Array[String]) {
      println( greeting )
   }
}

عند تنفيذ الكود أعلاه، النتيجة ستكون:

$ scalac Test.scala
$ scala Test
Hello, world!

نحن ذكرنا من قبل أن كائنات String غير قابلة للتغيير، إذا كنت بحاجة إلى إنشاء كلمة قابلة للتغيير، يمكنك استخدام فئة StringBuilder، مثل المثال التالي:

object Test {
   def main(args: Array[String]) {
      val buf = new StringBuilder;
      buf += 'a'
      buf ++= "bcdef"
      println( "buf is : " + buf.toString );
   }
}

عند تنفيذ الكود أعلاه، النتيجة ستكون:

$ scalac Test.scala
$ scala Test
buf is : abcdef

طول الكلمة

يمكننا استخدام طريقة length()  للحصول على طول الكلمة:

مثال على الإنترنت

object Test {
   def main(args: Array[String]) {
      var palindrome = "ar.oldtoolbag.com";
      var len = palindrome.length();
      println( "طول الكلمة هو: " + len );
   }
}

عند تنفيذ الكود أعلاه، النتيجة ستكون:

$ scalac Test.scala
$ scala Test
طول الكلمة هو: 14

ربط الأحرف

استخدام طريقة concat() في فئة String لربط كلمتين:

string1.concat(string2);

مثال على عرض:

scala> "基础教程网官网: ".concat("ar.oldtoolbag.com");
res0: String = 基础教程网官网:  ar.oldtoolbag.com

يمكنك أيضًا استخدام علامة الجمع (+) للتواصل:

scala> "基础教程网官网: " + " ar.oldtoolbag.com"
res1: String = 基础教程网官网:  ar.oldtoolbag.com

ناخذ مثالاً كاملاً:

object Test {
   def main(args: Array[String]) {
      var str1 = "基础教程网官网:";
      var str2 =  "ar.oldtoolbag.com";
      var str3 =  "基础教程网的 Slogan 为:";
      var str4 =  "学好基础,才能走的更远!";
      println( str1 + str2 );
      println( str3.concat(str4) );
   }
}

عند تنفيذ الكود أعلاه، النتيجة ستكون:

$ scalac Test.scala
$ scala Test
موقع الصفحة التعليمية الأساسية: ar.oldtoolbag.com
الشعار لـ الصفحة التعليمية الأساسية هو: تعلم الأساسيات، حتى تتمكن من الذهاب أبعد!

إنشاء نص تنسيقي

في String يمكنك استخدام printf() لتنسيق النص وعرضه، يمكن لـ String format() أن تعود String Object وليس PrintStream Object. في المثال أدناه يتم عرض استخدام printf()

object Test {
   def main(args: Array[String]) {
      var floatVar = 12.456
      var intVar = 2000
      var stringVar = "الصفحة التعليمية الأساسية!"
      var fs = printf("متغير الفلكي هو " +
                   "%f, متغير صحيح هو %d, النص هو " +
                   " %s", floatVar, intVar, stringVar)
      println(fs)
   }
}

عند تنفيذ الكود أعلاه، النتيجة ستكون:

$ scalac Test.scala
$ scala Test
مثال على المتغيرات: المتغير الفلكي هو 12.456000، المتغير الصحيح هو 2000، النص هو الصفحة التعليمية الأساسية!()

طرق String

الجدول أدناه يعرض الطرق الشائعة في java.lang.String، يمكنك استخدامها في Scala:

الترتيبالطريقة والوصف
1

char  charAt(int index)

إرجاع الحرف المحدد في الموضع المحدد

2

int compareTo(Object o)

مقارنة النص مع الكائن

3

int compareTo(String anotherString)

مقارنة النصين حسب الترتيب اللغوي

4

int compareToIgnoreCase(String str)

مقارنة النصين حسب الترتيب اللغوي بدون النظر في الحجم

5

String concat(String str)

إضافة النص المحدد إلى نهاية هذا النص

6

boolean contentEquals(StringBuffer sb)

التعرف على هذا النص مع StringBuffer المحدد

7

static String copyValueOf(char[] data)

يعود إلى النص الذي يمثل سلسلة الأحرف المحددة في هذا المجموعة

8

static String copyValueOf(char[] data, int offset, int count)

يعود إلى النص الذي يمثل سلسلة الأحرف المحددة في هذا المجموعة

9

boolean endsWith(String suffix)

يختبر ما إذا كان هذا النص ينتهي بسلسلة الأحرف المحددة

10

boolean equals(Object anObject)

يقارن هذا النص مع الكائن المحدد

11

boolean equalsIgnoreCase(String anotherString)

يقارن هذا النص مع النص الآخر دون النظر في الحجم

12

byte getBytes()

يحول هذا النص إلى سلسلة من الأحرف الثنائية باستخدام مجموعة الحروف الافتراضية، ويخزن النتيجة في مجموعة جديدة من الأحرف الثنائية

13

byte[] getBytes(String charsetName

يحول هذا النص إلى سلسلة من الأحرف الثنائية باستخدام مجموعة الحروف المحددة، ويخزن النتيجة في مجموعة جديدة من الأحرف الثنائية

14

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

يكرر الحرف من هذا النص إلى مجموعة الحروف الهدف

15

int hashCode()

يعود إلى هشاشة هذا النص

16

int indexOf(int ch)

يعود إلى أرقام الأعمدة التي يظهر فيها الرقم المحدد في النص

17

int indexOf(int ch, int fromIndex)

يعود إلى أرقام الأعمدة التي يظهر فيها الرقم المحدد في النص، حيث يبدأ البحث من الرقم المحدد

18

int indexOf(String str)

يعود إلى أرقام الأعمدة التي يظهر فيها النص الفرعي المحدد في النص

19

int indexOf(String str, int fromIndex)

يعود إلى أرقام الأعمدة التي يظهر فيها النص الفرعي المحدد في النص، حيث يبدأ البحث من الرقم المحدد

20

String intern()

يعود إلى الشكل النموذجي للمثلث

21

int lastIndexOf(int ch)

يعود إلى أرقام الأعمدة التي يظهر فيها الرقم المحدد في النص

22

int lastIndexOf(int ch, int fromIndex)

يعود إلى أرقام الأعمدة التي يظهر فيها الرقم المحدد في النص، حيث يبدأ البحث العكسي من الرقم المحدد

23

int lastIndexOf(String str)

إرجاع موقع آخر ظهور للنص الفرعي المحدد في هذا النص، من اليمين

24

int lastIndexOf(String str, int fromIndex)

إرجاع موقع آخر ظهور للنص الفرعي المحدد في هذا النص، من البداية المحددة للبحث

25

int length()

إرجاع طول هذا النص

26

boolean matches(String regex)

إعلام ما إذا كانت هذا النص تطابق النمط النصي المحدد

27

boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

اختبار ما إذا كانت منطقة النصين متطابقة

28

boolean regionMatches(int toffset, String other, int ooffset, int len)

اختبار ما إذا كانت منطقة النصين متطابقة

29

String replace(char oldChar, char newChar)

إرجاع نص جديد، وهو ناتج عن استبدال جميع التطابقات لـ oldChar في هذا النص بالنص الجديد newChar

30

String replaceAll(String regex, String replacement

استبدال جميع التطابقات للنص مع النمط النصي المحدد باستخدام replacement المحدد

31

String replaceFirst(String regex, String replacement)

استبدال أول تطابق للنص مع النمط النصي المحدد باستخدام replacement المحدد

32

String[] split(String regex)

قسم هذا النص بناءً على التطابق مع النمط النصي المحدد

33

String[] split(String regex, int limit)

قسم هذا النص بناءً على النمط النصي المحدد

34

boolean startsWith(String prefix)

اختبار ما إذا كانت هذا النص تبدأ بالحرف المحدد مسبقًا

35

boolean startsWith(String prefix, int toffset)

اختبار ما إذا كانت هذا النص من البداية المحددة للسلسلة تبدأ بالحرف المحدد مسبقًا

36

CharSequence subSequence(int beginIndex, int endIndex)

إرجاع سلسلة جديدة من الأحرف، وهي سلسلة فرعية من هذه السلسلة

37

String substring(int beginIndex)

إرجاع نص جديد هو فقاعة من هذا النص

38

String substring(int beginIndex, int endIndex)

إرجاع نص جديد هو فقاعة من هذا النص

39

char[] toCharArray()

تحويل هذا النص إلى مجموعة جديدة من الأحرف

40

String toLowerCase()

تحويل جميع الأحرف في هذا النص إلى حروف صغيرة باستخدام بيئة اللغة الافتراضية

41

String toLowerCase(Locale locale)

تحويل جميع الأحرف في هذا النص إلى حروف صغيرة باستخدام قواعد اللغة المحددة

42

String toString()

إرجاع هذا الجسم نفسه (إنه بالفعل نص!)

43

String toUpperCase()

تحويل جميع الأحرف في هذا النص إلى حروف كبيرة باستخدام بيئة اللغة الافتراضية

44

String toUpperCase(Locale locale)

تحويل جميع الأحرف في هذا النص إلى حروف كبيرة باستخدام قواعد اللغة المحددة

45

String trim()

حذف الحروفitespace من بداية ونهاية النص المحدد

46

static String valueOf(primitive data type x)

العودة إلى نوع المعلمة المحدد كتمثيل نصي