معالجة السلاسل النصية في Java مع مثال

⚡ ملخص ذكي

معالجة السلاسل النصية في Java يعتمد على فئة String، التي تمثل النص كمصفوفة من الأحرف، وتوفر طرقًا مدمجة مثل الطول، و indexOf، و charAt، و compareTo، و contains، و replace، وتحويل الحالة لمعالجة النص وتحويله بكفاءة.

  • 🔤 أساسيات الآلات الوترية: A Java String عبارة عن مصفوفة من الأحرف التي تديرها فئة String، والتي تمتد من فئة Object.
  • ➕ سلسلة: قم بدمج السلاسل النصية باستخدام طريقة concat() أو عامل التشغيل + للحصول على نفس النتيجة.
  • 📏 طرق التفتيش: تقوم الدوال length() و indexOf() و charAt() بإرجاع الحجم وفهرس الحرف والحرف الموجود في موضع معين.
  • 🔎 المقارنة والبحث: تقوم الدوال compareTo() و compareToIgnoreCase() و contains() بمقارنة السلاسل النصية والتحقق من وجود تسلسلات.
  • ✏️ تحويل: تقوم الدوال replace() و toLowerCase() و toUpperCase() بتعديل محتوى السلسلة وحالة الأحرف.
  • 🔒 ثبات: السلاسل النصية نهائية وغير قابلة للتغيير؛ يقوم جهاز JVM بتخزينها في مجمع الثوابت النصية.

معالجة السلاسل النصية في Java

ما هي السلاسل في Java?

السلسلة بالمعنى الحرفي هي سلسلة من الأحرف. مرحبًا، هل قلت الأحرف، أليس هذا نوعًا بدائيًا من البيانات؟ Java. نعم، لذلك من الناحية الفنية، الأساسية Java السلسلة هي في الأساس مجموعة من الأحرف.

لذلك سلسلتي أعلاه من "ROSE"يمكن تمثيلها على النحو التالي -

Java خيط

لماذا استخدام السلاسل؟

إحدى الوظائف الأساسية لعلوم الكمبيوتر الحديثة هي معالجة اللغة البشرية.

كما أن للأرقام أهمية في الرياضيات، فإن للرموز اللغوية أهمية في المعنى واتخاذ القرارات. ورغم أن ذلك قد لا يكون مرئيًا لمستخدمي الحاسوب، إلا أن الحواسيب تعالج اللغة في الخلفية بدقة متناهية تضاهي دقة الآلة الحاسبة. وتوفر مربعات الحوار المساعدة التعليمات، والقوائم الخيارات، وشاشات عرض البيانات الحالات والأخطاء والتغييرات التي تطرأ على اللغة في الوقت الفعلي.

ك Java أيها المبرمج، ستكون إحدى أدواتك الرئيسية لتخزين اللغة ومعالجتها هي فئة String.

أمثلة على بناء جملة السلسلة

والآن، دعونا ننتقل إلى بعض قواعد الكتابة، ففي النهاية، نحتاج إلى كتابة هذا في Java الكود أليس كذلك.

السلسلة عبارة عن مجموعة من الأحرف، ممثلة على النحو التالي:

//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);

من الناحية الفنية، يتم تعريف السلسلة على النحو التالي في المثال أعلاه-

= new (argument);

الآن لا يمكننا دائمًا كتابة سلاسلنا كمصفوفات؛ ومن ثم يمكننا تحديد السلسلة في Java كما يلي:

//Representation of String
String strSample_2 = "ROSE";

من الناحية الفنية، يتم تمثيل ما ورد أعلاه على النحو التالي:

= ;

استخدم فئة السلسلة Java يمتد القادم فئة الكائن.

تسلسل السلسلة:

التسلسل هو ربط سلسلتين أو أكثر.

ألقِ نظرة على الصورة أدناه-

أمثلة على بناء جملة السلسلة

لدينا سلسلتين str1 = "Rock" وstr2 = "Star"

إذا قمنا بجمع هاتين السلسلتين، فيجب أن نحصل على نتيجة مثل str3 = "RockStar".

راجع مقتطف الشفرة أدناه، فهو يشرح الطريقتين لتنفيذ عملية دمج السلاسل النصية.

الأول يستخدم "CONCAT"طريقة ""String class"" والثانية تستخدم عامل ""+"" الحسابي. كلتا النتيجتين تؤديان إلى نفس الناتج""

public class Sample_String{
  public static void main(String[] args){
//String Concatenation
String str1 = "Rock";
String str2 = "Star";
//Method 1 : Using concat
String str3 = str1.concat(str2);
System.out.println(str3);
//Method 2 : Using "+" operator
String str4 = str1 + str2;
System.out.println(str4);
}
}

الناتج المتوقع:

RockStar
RockStar

مهم Java طرق السلسلة:

Java طرق السلسلة

دعونا نسأل Java قم بطرح بعض الأسئلة على الفصل ومعرفة ما إذا كان يمكنه الإجابة عليها:

طريقة "طول السلسلة".

كيف يمكنك تحديد طول السلسلة المعطاة؟ لقد قدمت طريقة تسمى "الطول". استخدمها مع السلسلة التي تحتاجها لمعرفة الطول.

public class Sample_String{
  public static void main(String[] args){  //Our sample string for this tutorial
  String str_Sample = "RockStar";
  //Length of a String
  System.out.println("Length of String: " + str_Sample.length());}}

الناتج المتوقع:

Length of String: 8

طريقة "فهرس" السلسلة

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

لقد أجبت بنفسك يا صديقي، هناك طريقة “indexOf” ستساعدك على تحديد مكان حرف معين تقوم بتحديده.

public class Sample_String{
  public static void main(String[] args){//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
//Index of a given character
System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));}}

الناتج المتوقع:

Character at position 5: t
Index of character 'S': 4

طريقة سلسلة "charAt".

على غرار السؤال أعلاه، بالنظر إلى الفهرس، كيف أعرف الشخصية الموجودة في ذلك الموقع؟

مرة أخرى، الأمر بسيط للغاية!! استخدم طريقة "charAt" وقم بتوفير الفهرس الذي تريد العثور على الحرف الخاص به.

public class Sample_String{
  public static void main(String[] args){//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));}}

الناتج المتوقع:

Character at position 5: t

طريقة "المقارنة مع" السلسلة

هل أريد التحقق مما إذا كانت السلسلة التي تم إنشاؤها بواسطة طريقة ما تساوي شيئًا أريد التحقق منه؟ كيف يمكنني مقارنة سلسلتين؟

استخدم الطريقة "compareTo" وحدد السلسلة التي ترغب في مقارنتها.

استخدم "compareToIgnoreCase" في حالة عدم رغبتك في أن تكون النتيجة حساسة لحالة الأحرف.

ستكون النتيجة القيمة 0 إذا كانت سلسلة الوسيطة مساوية لهذه السلسلة؛ قيمة أقل من 0 إذا كانت هذه السلسلة أقل من وسيطة السلسلة من الناحية المعجمية؛ وقيمة أكبر من 0 إذا كانت هذه السلسلة أكبر من وسيطة السلسلة من الناحية المعجمية.

public class Sample_String{
  public static void main(String[] args){//Compare to a String
String str_Sample = "RockStar";
  System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
  //Compare to - Ignore case
  System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));}}

الناتج المتوقع:

Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0

طريقة "الاحتواء" للسلسلة

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

استخدم الطريقة "يحتوي"وحدد الأحرف التي تريد التحقق منها.

سياسات الإرجاع والاستبدال صحيح إذا وفقط إذا كانت هذه السلسلة تحتوي على التسلسل المحدد لقيم char.

public class Sample_String{
  public static void main(String[] args){  //Check if String contains a sequence
String str_Sample = "RockStar";
  System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));}}

الناتج المتوقع:

Contains sequence 'tar': true

طريقة السلسلة "endsWith".

كيف يمكنني التأكد من انتهاء السلسلة بلاحقة معينة؟ مرة أخرى أجبت عليه. استخدم طريقة "endsWith" وحدد اللاحقة في الوسائط.

سياسات الإرجاع والاستبدال صحيح إذا كان تسلسل الأحرف الذي تمثله الوسيطة هو لاحقة لتسلسل الأحرف الذي يمثله هذا الكائن.

public class Sample_String{
  public static void main(String[] args){  //Check if ends with a particular sequence
String str_Sample = "RockStar";
  System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));}}

الناتج المتوقع:

EndsWith character 'r': true

طريقة السلسلة "replaceAll" و"replaceFirst".

أريد تعديل سلسلتي في عدة أماكن واستبدال عدة أجزاء من السلسلة؟

Java طرق استبدال السلسلة واستبدال الكل واستبدال الأول. يمكنك تحديد جزء السلسلة الذي تريد استبداله والسلسلة البديلة في الوسائط.

public class Sample_String{
  public static void main(String[] args){//Replace Rock with the word Duke
String str_Sample = "RockStar";
System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));}}

الناتج المتوقع:

Replace 'Rock' with 'Duke': DukeStar

خيط Java "إلى أحرف صغيرة" & Java طريقة "الأحرف الكبيرة".

أريد أن تظهر سلسلتي بأكملها بأحرف صغيرة أو بأحرف كبيرة؟

ما عليك سوى استخدام الأساليب "toLowercase()" أو "ToUpperCase()" مقابل السلاسل التي تحتاج إلى تحويل.

public class Sample_String{
  public static void main(String[] args){//Convert to LowerCase
String str_Sample = "RockStar";
System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
//Convert to UpperCase
System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());}}

الناتج المتوقع:

Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR

نقاط مهمة يجب ملاحظتها:

  • السلسلة هي فئة نهائية; أي بمجرد إنشاء القيمة لا يمكن تغييرها. وبالتالي تسمى كائنات السلسلة غير قابلة للتغيير.
  • استخدم Java يقوم الجهاز الظاهري (JVM) بإنشاء موقع ذاكرة خاص بالسلاسل التي يتم استدعاؤها تجمع سلسلة ثابتة. لهذا السبب يمكن تهيئة السلسلة بدون الكلمة الأساسية "الجديدة".
  • فئة السلسلة تقع تحت java.lang.String التسلسل الهرمي. ولكن ليست هناك حاجة لاستيراد هذه الفئة. Java منصة توفر لهم تلقائيا.
  • خيط يمكن تجاوز المرجع ولكن هذا لا يحذف المحتوى; أي إذا

سلسلة h1 = "مرحبا"؛

h1 = "مرحبا"+"العالم";

ثم لا يتم حذف سلسلة "hello". انها فقط تفقد مقبضها.

  • مراجع متعددة يمكن استخدامها لنفس السلسلة ولكنها سوف تفعل ذلك تحدث في نفس المكان; أي إذا

سلسلة h1 = "مرحبا"؛

سلسلة h2 = "مرحبا"؛

سلسلة h3 = "مرحبا"؛

ثم يتم إنشاء تجمع واحد فقط لسلسلة "hello" في الذاكرة مع 3 مراجع-h1,h2,h3

  • إذا لم تكن الجامعة المرغوب التقدم اليها غير مذكورة أعلاه ، فاتصل بنا للحصول على الرقم مذكور في "" ثم أنه يصبح سلسلة، لم يعد رقماً. يعني إذا

السلسلة S1 =”الرقم هو: “+ “123”+”456″;

النظام.خارج.println(S1);

ثم سيطبع: الرقم هو: 123456

إذا كانت التهيئة هكذا:

السلسلة S1 = "الرقم هو: "+(123+456);

System.out.println(S1);

فيطبع: الرقم: 579

هذا كل شيء بالنسبة للسلاسل!

الأسئلة الشائعة

Java تُعتبر السلاسل النصية غير قابلة للتغيير لأسباب أمنية، ولضمان سلامة العمليات المتعددة، ولتحسين الأداء. ولأن القيمة لا تتغير بعد إنشائها، يمكن لآلة جافا الافتراضية (JVM) تخزين السلاسل النصية مؤقتًا بأمان في مجمع الثوابت النصية ومشاركة المراجع.

In Javaتُستخدم علامة المساواة (==) لمقارنة مراجع الكائنات، بينما تُستخدم دالة المساواة (equals()) لمقارنة محتوى الأحرف الفعلي لسلسلتين نصيتين. استخدم دالة المساواة (equals()) للتحقق مما إذا كانت سلسلتان نصيتان لهما نفس القيمة.

النوع String غير قابل للتغيير، بينما النوع StringBuilder والنوع StringBuffer قابلة للتغيير. سلسلة نصيةBuffer هو آمن للاستخدام في بيئة متعددة الخيوط ومتزامن؛ أما StringBuilder فهو أسرع ولكنه ليس آمنًا للاستخدام في بيئة متعددة الخيوط، مما يجعله مثاليًا لمعالجة السلاسل النصية أحادية الخيوط.

يمكن لمساعدي البرمجة بالذكاء الاصطناعي إنشاء رمز لمعالجة السلاسل النصية، واقتراح الطرق الصحيحة، وشرح التعبيرات النمطية، واكتشاف الأخطاء مثل أخطاء المؤشر الفارغ أو أخطاء الفهرسة في عمليات السلاسل النصية.

نعم. يمكن لأدوات الذكاء الاصطناعي الكتابة Java قم بشرح الكود الذي ينظف وينسق ويحول النصوص باستخدام طرق مثل الاستبدال والتقليم وتحويل حالة الأحرف، ثم اشرح كل خطوة للمتعلمين.

تلخيص هذه التدوينة بـ: